Laravel 5框架学习之表单验证
在建立一个文章的时候,如果你什么都不输入直接提交,ok,你获得了一个空的文章,没有任何错误提示,这是不对的。在命令行下运行phpartisan可以看到一个选项make:request,新建一个formrequest类。在命令行执行
phpartisanmake:requestCreateArticleRequest
生成的文件在app/http/requests目录下。在文件中我们可以看到两个方法:
publicfunctionauthorize() { returnfalse; } publicfunctionrules() { return[ // ]; }
authorize表示用户在提交表单的时候是否需要是认证用户,我们不需要认证,返回true。rules是我们的规则方法。让我们修改这个方法:
publicfunctionauthorize() { //修改为true,表示不需要认证,或者是通过认证 returntrue; } publicfunctionrules() { return[ 'title'=>'required|min:3', 'body'=>'required', 'published_at'=>'required|date' ]; }
其他的约束可以插看laravel的文档。上面的约束表示title是必须输入的,最少3个字符,body是必须的,published_at是必须的而且是日期。
在视图中,我们总是可以访问$errors变量来判断我们是否有错误,修改视图
@if($errors->any()) <ulclass="alertalert-danger"> @foreach($errors->all()as$error) <li>{{$error}}</li> @endforeach </ul> @endif {{--使用我们添加的illuminate\html开源库--}} {!!Form::open(['url'=>'articles'])!!}
修改控制器,引入我们的Request类。
publicfunctionstore(Requests\CreateArticleRequest$request){ Article::create($request->all()); returnredirect('articles'); }
再次提交表单,什么都不填,可以看到错误信息。
修改提示信息变为中文
显示的是英文的错误信息,实际上laravel考虑到了国际化的问题,首先修改config/app.php,
'locale'=>'zh',
将locale语言设置为中文,然后再resources/lang下面新建文件夹zh,拷贝resources/lang/en/validation.php文件到zh目录下,修改:
"min"=>[ "numeric"=>"The:attributemustbeatleast:min.", "file"=>"The:attributemustbeatleast:minkilobytes.", "string"=>":attribute至少要包含:min字符。", "array"=>"The:attributemusthaveatleast:minitems.", ], "required"=>":attribute必须填写。",
其他的可以自行翻译。再次提交空表单,错误信息为中文了。而且min:3的判断也为最少3个中文。
--
laravel也在控制器中集成了validate方法,换句话说,我们不一定要生成request类,这些工作我们可以直接在控制器中完成。
修改控制器:
//注意Request的命名空间,不要弄错了 publicfunctionstore(\Illuminate\Http\Request$request){ $this->validate($request,[ 'title'=>'required|min:3', 'body'=>'required', 'published_at'=>'required|date' ]); Article::create($request->all()); returnredirect('articles'); }
结果相同,这样可以更快速的完成简单的验证。
以上所述就是本文给大家分享的全部内容了,希望能够对大家熟练掌握Laravel5框架有所帮助。