我尝试了几件事来显示错误消息。这个想法是用户可以为他的产品添加标签。在我的主视图中是一个列出所有产品的表。表格的每一行都有自己的复选框,用户可以选择他想要的任何产品,在下一页上为这些产品添加一些标签。
我的问题是,我想显示一条告诉用户的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中的其他方式。
感谢您抽出宝贵的时间,我很抱歉我的英语不好。
答案 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 documentation和myanswer以查看其他示例。