在我的网站上,用户可以显示其他用户创建的帖子。但是,我有2个选择框,一个用于按名称或日期排序,另一个按类别排序。我做的方式不正确,我知道这一点。原因很简单,我不知道如何检查哪个表单提交了请求。
这是我用于显示事件的控制器方法:
public function getEvents(Request $request){
if($request['sort'] == "created_at"){
$posts = Post::orderBy('created_at', 'desc')->get();
}
elseif($request['sort'] == "title"){
$posts = Post::orderBy('title', 'desc')->get();
}
elseif($request['category'] == "sport"){
$post = Post::where('type', '=', 'sport' )->get();
}
elseif($request['category'] == "culture"){
$post = Post::where('type', '=', 'culture' )->get();
}
elseif($request['category'] == "other"){
$post = Post::where('type', '=', 'other' )->get();
}
else{
$posts = Post::orderBy('created_at', 'desc')->get();
}
return view ('eventspage', ['posts' => $posts]);
}
这是目前不正确的,我希望它遵循这种结构:
if(request submitted by 'sort')
then do this...
elseif(request submitted by 'category')
then do this...
这是包含2个选择框的视图:
<div class="row">
<div class="col-md-6">
<form action="{{ route('events') }}">
<select name="category" onchange="this.form.submit()" class="form-control">
<option value="sport">sport</option>
<option value="culture">Culture</option>
<option value="other">Other</option>
</select>
</form>
</div>
<div class="col-md-6">
<form action="{{ route('events') }}">
<select name="sort" onchange="this.form.submit()" class="form-control">
<option value="created_at">Date</option>
<option value="title">Title</option>
</select>
</form>
</div>
</div>
答案 0 :(得分:1)
您可以在表单中使用名称为formName
的隐藏输入和相应的值。
然后很容易检查提交的表格。
//Category form
<input type="hidden" name="formName" value="category">
//Sort form
<input type="hidden" name="formName" value="sort">
然后,在控制器中:
if($request['formName'] == 'category') //request submitted by 'category'
//then do this...
elseif($request['formName'] == 'sort') //request submitted by 'sort'
//then do this...
请注意不要在两个条件中放入太多不同的代码。如果您发现自己有两个完全不同的功能,请为每个表单创建一个操作。