我正在尝试为我的页面创建一个过滤器,并且我想记住表单值。我尝试了laravel中的old()函数和其他一些方法,但都不起作用。也许我做错了什么。下面是我的代码:
blade.php:
<form method="get" action="/admin/users" id="searchForm">
<div class="row">
<div class="col-sm-4 mb-2 lg-4">
<input type="text" class="form-control" name="name" id="name"
value="{{ request()->name }}" placeholder="Filter user by name or email">
</div>
<div class="col-sm-4 mb-2 lg-4">
<select class="form-control" name="userfilter" id="userfilter">
<option class="genrekeuze" value="id">Sort By ID (default)</option>
<option class="genrekeuze" value="name">Name</option>
<option class="genrekeuze" value="email">email</option>
<option class="genrekeuze" value="active">active</option>
<option class="genrekeuze" value="admin">admin</option>
</select>
</div>
<div class="col-sm-4 mb-2 lg-4">
<select class="form-control" name="direction" id="direction">
<option id="richtingboven" class="genrekeuze" value="asc" >ascending</option>
<option id="richtingonder" class="genrekeuze" value="desc">descending</option>
</select>
</div>
<div class="col-sm-2 mb-2">
<button style="display: inline;" type="submit" class="btn btn-success btn-block">Search</button>
</div>
</div>
</form>这是我的控制器:
public function index(Request $request)
{
//vraag input van zoekbalk en option list
$zoeknaam = '%' . $request->input('name') . '%';
$vallist=$request->input('userfilter','id');
$direction=$request->input('direction','asc');
//users uit database halen, paginate en where functie voor filteren
$users = User::where('name', 'like', $zoeknaam)
->orWhere('email', 'like', $zoeknaam)
->orderBy($vallist,$direction)
->paginate(10);
$result = compact('users');
Json::dump($result);
//naar view met data
return view('admin.users.users', $result);
}输入似乎会自动记住它的值,但两个下拉框(#userfilter和#direction)却不会。如果有人知道解决方案,请随时发表评论。
感谢您的阅读!
发布于 2019-12-29 02:18:49
设置select标记的值实际上不会设置该选项。这么做吧
<select name="myselect" value="{{old('myselect')}}`">行不通的。该选项需要具有selected属性才能被选中,因此您需要将selected属性添加到其值与old()值匹配的选项中。让我来演示一下。
<select class="form-control" name="userfilter" id="userfilter">
<option class="genrekeuze" value="id" @if(old('userfilter')=='id') selected @endif>Sort By ID (default)</option>
<option class="genrekeuze" value="name" @if(old('userfilter')=='name') selected @endif>Name</option>
<option class="genrekeuze" value="email" @if(old('userfilter')=='email') selected @endif>email</option>
<option class="genrekeuze" value="active" @if(old('userfilter')=='active') selected @endif>active</option>
<option class="genrekeuze" value="admin" @if(old('userfilter')=='admin') selected @endif>admin</option>
</select>类似地,对于方向
<select class="form-control" name="direction" id="direction">
<option id="richtingboven" class="genrekeuze" value="asc" @if(old('direction')=='asc') selected @endif>ascending</option>
<option id="richtingonder" class="genrekeuze" value="desc" @if(old('direction')=='desc') selected @endif>descending</option>
</select>https://stackoverflow.com/questions/59513557
复制相似问题