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...

请注意不要在两个条件中放置太多不同的代码。如果您发现自己有两个完全不同的功能,请为每个表单创建一个操作。