我想在用户按页面刷新时刷新,例如。结果页面将所选国家/地区保留在表单上的选项中。
这就是我填充下拉列表的地方
@foreach ($countries as $country)
<option value="{!! $country->id !!}">{!! $country->name !!}</option>
@endforeach
这就是我所尝试的但似乎不正确,因为没有选择该值
@foreach ($countries as $country)
<option value="{!! $country->id !!}" @if( old('country->id') == $country->id) selected="selected" @endif>{!! $country->name !!}</option>
@endforeach
这里的诀窍是什么?
这是控制器
public function search(Request $request)
{
$searchText = strip_tags($request['q']);
$seachLocation = strip_tags($request['l']);
$columns =['alias','description','address1','address2','address3'];
$query = Item::select('*');
$query->where( 'title', 'like', '%'.$searchText.'%');
foreach( $columns as $column) {
$query->orWhere( $column, 'like', '%'.$searchText.'%', '%'.$seachLocation.'%');
}
$query->orWhereHas('category',function( $query ) use ( $searchText ) {
$query->where('title', 'like', '%'.$searchText.'%' );
});
$query->orWhereHas('country',function( $query ) use ( $searchText ) {
$query->where('name', 'like', '%'.$searchText.'%' );
});
$items = $query->paginate(5);
$searchQuery = $searchText;
$searchQueryLoc = $seachLocation;
return view('search', compact('items','searchQuery','seachLocation'));
}
答案 0 :(得分:3)
要使用old()
帮助器,表单输入需要有一个名称。
然后使用输入名称作为old()
助手中的参数来获取旧值。
所以像old('country->id')
一样使用它不会起作用;你需要使用old('nameAttributeOfInput')
。
假设此输入的name
属性为country_id
的完整示例:
@foreach ($countries as $country)
<option value="{!! $country->id !!}" @if( old('country_id') == $country->id) selected="selected" @endif>{!! $country->name !!}</option>
@endforeach
作为旁注,请注意{!! !!}
不会逃避页面上可能存在潜在危险的值。使用{{ }}
来逃避价值可能会更好,也更安全。
答案 1 :(得分:1)
I would suggest that you use session to store the selected country. For example:
session()->put('forms.country', $request->get('country'));
Then your html should become:
<option value="{{ $country->id }}" @if( session('forms.country') == $country->id) selected="selected" @endif>{{ $country->name }}</option>
答案 2 :(得分:0)
您可以在表单的字段中使用Laravel内置的old()来保存提供的值。
@if( old('field_name') == $country->id) selected="selected" @endif