باقی ماندن مقدار انتخاب شده در فرم select پس از ارسال فرم در لاراول

M-R 11 ماه پیش

در پروژه لاراول من فرمی به صورت زیر در بخش view دارم

<select name="gate" class="form-control text-right">
<option value="all">همه</option>
@foreach(Transaction::GATE as $gate)
<option value="{{$gate['value']}}">
{{$gate['value']}}
</option>
@endforeach
</select>

<button type="submit" class="btn btn-oblong">
جستجو
</button>

 

در بخش مدل Transaction  آرایه ای تعریف کردم که درگاه های بانکی رو مشخص می کنه

 const MELLAT = 'mellat';
const SAMAN = 'saman';

const GATE = [
self::MELLAT => [
'value' => self::MELLAT,
'color' => 'danger'
],
self::SAMAN => [
'value' => self::SAMAN,
'color' => 'primary'
],
];

در فرم بالا حلقه @foreach لیست درگاه ها رو به درستی نشون می ده.

حالا من میخوام وقتی یکی از درگاه ها رو انتخاب کردم و دکمه جستجو رو زدم، وقتی صفحه دوباره رفرش شد مقداری که انتخاب کرده بودم در قسمت select باقی مونده باشه. ولی وقتی صفحه رفرش میشه مقدار select هم به مقدار قبلی یعنی all برمیگرده. چطور میتونم این مشکل رو برطرف کنم.

1 پاسخ
برای قرار دادن دیدگاه وارد شوید
ahmadaskari 11 ماه پیش

اگه سوال درست متوجه سوال شما شده باشم، احتمالا کد زیر مشکل شما رو برطرف کنه. 

کاری که کردم این بود که در حلقه @foreachشرطی قرار دادم که در صورت برابر بودن مقدار request ارسال شده با یکی از مقادیر درون فرم selected به option اضافه میشه. selected در فرم html نشون دهنده انتخاب شدن اون option است.

این کد رو میشه در جاهای دیگر و بدون لاراول هم مورد استفاده قرار داد و با php شرط رو نوشت.

 <select name="gate" class="form-control text-right">
<option value="all">همه</option>
@foreach(Transaction::GATE as $gate)
<option value="{{$gate['value']}}" @if(request('gate')==$gate['value']) selected @endif>
{{$gate['value']}}
</option>
@endforeach
</select>