如何在 Laravel 中重定向后设置选择值

Posted

技术标签:

【中文标题】如何在 Laravel 中重定向后设置选择值【英文标题】:how to set select value after redirecting in Laravel 【发布时间】:2020-09-21 00:16:41 【问题描述】:

我是 Laravel 的新手,我试图将 select 的值设置为从我的控制器返回的值。我不知道为什么它不会改变价值

show.blade.php

<div class="container d-flex justify-content-center">
    <form action=" action('ReportController@show', ['id' => 'month']) " class="month-form" method="GET">
        <select name="month" id="month" class="custom-select form-input month-select">
            <option value="01">January</option>
            <option value="02">February</option>
            <option value="03">March</option>
            <option value="04">April</option>
            <option value="05">May</option>
            <option value="06">June</option>
            <option value="07">July</option>
            <option value="08">August</option>
            <option value="09">September</option>
            <option value="10">October</option>
            <option value="11">November</option>
            <option value="12">December</option>
        </select>
        <button class="btn btn-secondary">Generate Report</button>
    </form>
</div>

控制器 函数显示()

$month_number = request('month');
$month_name = date("M", mktime(0, 0, 0, $month_number, 1));
return view('reports.show', compact('month_number', 'month_name'));

This is my form 当我单击生成按钮时,它会返回此页面,该值将是我之前选择的值。因此,如果我选择 May 然后生成按钮,则新页面将是 May 在 select 中,而不是默认值。

编辑:我也尝试过使用 jQuery,但它只会让我的表单空白,根本不会给它任何价值

$(document).ready(function()
   var month = @json($month_name ?? '');
   $('#month').val(month);
);

【问题讨论】:

重定向后 url 中是否存在 month 变量?您是否在重定向后再次返回此页面,但使用 $month_name 变量? 是的 url 中存在月份变量:“127.0.0.1:8000//monthly-reports/month?month=05”。我可以使用 console.log() 获取数据,但无法更改选择值 我正在发布答案,它可能会对您有所帮助。 【参考方案1】:

如果我清楚地理解你的问题,那么我认为你想要这样的东西

<div class="container d-flex justify-content-center">
<form action=" action('ReportController@show', ['id' => 'month']) " class="month-form" method="GET">
    <select name="month" id="month" class="custom-select form-input month-select">
        <option value="01" @isset($month_number)  $month_number == 01 ? 'selected' : ''  @endisset>January</option>
        <option value="02" @isset($month_number)  $month_number == 02 ? 'selected' : ''  @endisset>February</option>
        <option value="03" @isset($month_number)  $month_number == 03 ? 'selected' : ''  @endisset>March</option>
        <option value="04" @isset($month_number)  $month_number == 04 ? 'selected' : ''  @endisset>April</option>
        <option value="05" @isset($month_number)  $month_number == 05 ? 'selected' : ''  @endisset>May</option>
        <option value="06" @isset($month_number)  $month_number == 06 ? 'selected' : ''  @endisset>June</option>
        <option value="07" @isset($month_number)  $month_number == 07 ? 'selected' : ''  @endisset>July</option>
        <option value="08" @isset($month_number)  $month_number == 08 ? 'selected' : ''  @endisset>August</option>
        <option value="09" @isset($month_number)  $month_number == 09 ? 'selected' : ''  @endisset>September</option>
        <option value="10" @isset($month_number)  $month_number == 10 ? 'selected' : ''  @endisset>October</option>
        <option value="11" @isset($month_number)  $month_number == 11 ? 'selected' : ''  @endisset>November</option>
        <option value="12" @isset($month_number)  $month_number == 12 ? 'selected' : ''  @endisset>December</option>
    </select>
    <button class="btn btn-secondary">Generate Report</button>
</form>

如果不起作用,请尝试将01 更改为"01" 等等...

【讨论】:

以上是关于如何在 Laravel 中重定向后设置选择值的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中重定向域名

如何在 laravel jetstream 中重定向?

如何在 Vue 3 中重定向另一个路由器? (在 Laravel 8 中使用 next.router 和 vue 3)

如何在 Ajax 请求中重定向回 Laravel 8 中的错误

在laravel中重定向到外部url时如何保留会话数据

在 Azure OIDC 注销后,应该将啥内容安全策略标头值重定向回应用程序