Laravel
有一套非常强大的表单验证功能。
这里将利用继承Request
创建类,进行验证。
现在有表单
<form action="{{ url('saveArticle') }}" method="post">
{{ csrf_field() }}
<h1>文章</h1>
<br/>标题: <br/>
<input type="text" name="title" value="{{ old('title') }}">
<br/> 内容: <br/>
<textarea style="height: 200px; width: 300px;" name="content">{{ old('content') }}</textarea>
<br/>
<input type="submit" value="提交">
</form>
这是点击提交后的路由
Route::post('/saveArticle', 'TaskController@store');
TaskController
的store
方法
class TaskController extends Controller {
public function store(Request $request) {
//...存储操作
}
}
如果没有表单验证,未输入任何数据点击提交,就会在数据库中插入空的数据,这是非常不友好的,我们需要过滤这种情况。
首先使用控制台在项目下使用
php artisan make:request CheckValRequest
随后在app\Http\Request
下生产了一个CheckValRequest
类。
class CheckValRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required | Min:3',
'content' => 'required',
];
}
}
authorize()
方法主要判断该用户是否有权限进行接下来的操作,返回true
表示有,这里我们把它改成true
。
rules()
方法定义相关验证规则。required
表示title
不能为空,Min : 3
表示title
长度最小为3 。
定义好规则后,修改TaskController
的store()
方法
class TaskController extends Controller {
public function store(CheckValRequest $request) {
//...存储操作
}
}
这里使用CheckValRequest
作为参数,这样就完成了数据的验证。
如果我们填写的数据不满足规定的要求,会返回之前的页面。不然会进行store()
的操作。
可以通过$errors
来获取错误。
<form action="{{ url('saveArticle') }}" method="post">
{{ csrf_field() }}
<h1>文章</h1>
<br/>标题: <br/>
<input type="text" name="title" value="{{ old('title') }}">
<br/> 内容: <br/>
<textarea style="height: 200px; width: 300px;" name="content">{{ old('content') }}</textarea>
<br/>
<input type="submit" value="提交">
</form>
@if($errors->any())
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
@endif
old()
方法用来获取”老数据”。
提交空白表达时的效果:
下面的2行就是具体的错误。