(1) Laravel框架 在 提交 表单的时候 也会将 表单中 带有 name 属性的 input标签 生成对应的 请求参数(name为参数名,value为参数值)这些请求参数等于是存放在了Request请求对象中的Attribute键值对集合中。
(2) 所以我们在后台的 Controller控制层。可以通过 validate()方法来对Request对象中的请求参数进行自定义验证。
直接调用$request对象中的valiable():
$validateData = $request->validate([
'title'=>'required|unique:posts',
'body'=>'required'
]);
另一种写法:
$this->validate($request, [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
'publish_at' => 'nullable|date',
]);
如果 验证成功了就继续向下执行 操作数据库的 代码。
如果 验证失败了 Laravel框架就会自动生成响应Response,而且验证失败的 所有 的 错误信息 会被 存放在 一次性Session会话对象中。然后laravel框架会自动为我们跳转到上一个页面 (用代码实现就是:$request->redirect()->back() ),我们在上一个页面中可以通过{{$error}}来获取存放在$error中的所有的错误信息。
前端 打印错误信息 常用的 方法(配合BootStrap):
<!-- /resources/views/post/create.blade.php -->
<h1>Create Post</h1>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<!-- Create Post Form -->
手动判断验证是否通过,然后手动执行页面跳转,保存错误信息,然后数据保存等操作:
if($validateData ->fails()){
-
return redirect()->back()->withErrors($validator)->withInput(); //信息保持
-
}
-
错误信息保存 : withErrors($validator)
-
数据保留:withInput() + {{old('name')}}