您的位置:首页 > 编程语言 > PHP开发

Laravel 表单验证功能

2017-02-26 22:20 381 查看
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行就是具体的错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: