如果未选中任何复选框,则显示错误消息 - Laravel

时间:2016-05-31 11:38:03

标签: javascript php html laravel checkbox

我尝试了几件事来显示错误消息。这个想法是用户可以为他的产品添加标签。在我的主视图中是一个列出所有产品的表。表格的每一行都有自己的复选框,用户可以选择他想要的任何产品,在下一页上为这些产品添加一些标签。

我的问题是,我想显示一条告诉用户的flash消息,他没有勾选任何复选框。没有更多的东西。目前,他被定向到下一页,没有选择产品。

我的尝试

如果他提交表格,那就是控制器功能,用户会被定向。

公共功能编辑()     {

// some non important controller code 
if(count(Input::get('id')) == 0)
{
    Session::flash('danger', 'Sie haben kein Produkt gewählt!');
    return redirect()->back();
}
else
{
    return view('layout.edit.productedit', [
        'ids' => $data,                  // non important variables
        'products' => $product_name        
    ]);
}

}

在我看来:

@if (Session::has('danger'))
    <div class="alert alert-danger">{{ Session::get('danger') }}</div>
@endif

这没有那么好用。用户显示他的错误消息,但如果他做的一切正确,下一页也会收到此错误消息并且标记请求不再起作用。

所以我需要另一种方法来检查用户是否选中了任何复选框并告诉他,他需要选择至少一个复选框来继续添加标签。

可能使用Javascript / Jquery解决方案或laravel中的其他方式。

感谢您抽出宝贵的时间,我很抱歉我的英语不好。

1 个答案:

答案 0 :(得分:2)

我不会手动验证输入,而是使用validate()方法,

public function edit(Request $request, $id)
{
    $this->validate($request, [
        'title'      => 'required|string'
        'mycheckbox' => 'accepted'
    ]);

    // if user passes the validation above, the code here will be executed
    // Otherwise user will be redirected back to previous view with old input and validation errors.
    return view('my-view');
}

在您的视图中,您可以收到如下错误:

@if (session()->has('title'))
    <div class="alert alert-danger">{{ session()->first('mycheckbox') }}  </div>
@endif

@if (session()->has('mycheckbox'))
    <div class="alert alert-danger">{{ session()->first('mycheckbox') }}  </div>
@endif

阅读official documentationmyanswer以查看其他示例。