Laravel:检查提交请求的表单

时间:2018-04-23 12:45:16

标签: php html laravel blade

在我的网站上,用户可以显示其他用户创建的帖子。但是,我有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>

1 个答案:

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

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