Laravel: 检查哪个表单提交了请求
Laravel: Check on which form submitted the request
在我的网站上,用户可以显示其他用户创建的帖子。但是,我有 2 个 select 框,一个用于按名称或日期排序,另一个用于按类别排序。我这样做的方式是不正确的,我知道这一点。原因很简单,我不知道如何对提交请求的表单进行 if 检查。
这是我用于显示事件的控制器方法:
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 个 select 框:
<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>
您可以在表单中隐藏输入,名称为 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...
请注意不要在两个条件中放置太多不同的代码。如果您发现自己有两个完全不同的功能,请为每个表单创建一个操作。
在我的网站上,用户可以显示其他用户创建的帖子。但是,我有 2 个 select 框,一个用于按名称或日期排序,另一个用于按类别排序。我这样做的方式是不正确的,我知道这一点。原因很简单,我不知道如何对提交请求的表单进行 if 检查。
这是我用于显示事件的控制器方法:
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 个 select 框:
<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>
您可以在表单中隐藏输入,名称为 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...
请注意不要在两个条件中放置太多不同的代码。如果您发现自己有两个完全不同的功能,请为每个表单创建一个操作。