如何在 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 中重定向后设置选择值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Vue 3 中重定向另一个路由器? (在 Laravel 8 中使用 next.router 和 vue 3)