黑马lavarel教程---6、简单验证
一、总结
一句话总结:
1、验证的最简单实例:$request的validate方法,验证通过可以继续进行,验证失败就重定向
2、中文提示可以用中文语言包
3、对语言包中的翻译不满意可以自己修改:验证的话就是修改zh-CN包中的validation.php
1、为什么需要做后端验证?
因为浏览器可以将页面的js禁用
2、lavarel中如何得知一个请求类型?
语法:Input::method():返回GET或者POST
3、验证的最简单实例?
$request的validate方法,验证通过可以继续进行,验证失败就重定向
public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // 博客文章验证通过 }
4、lavarel验证失败后会怎样?
1、在典型的 HTTP 请求的情况下,会生成一个重定向响应。
2、对于 AJAX 请求则会发送 JSON 响应。
现在我们开始在 store 方法中编写逻辑来验证新的博客文章。为此,我们将使用 IlluminateHttpRequest 对象提供的 validate 方法 。如果验证通过,代码就可以正常的运行。如果验证失败,则会抛出异常,并自动将对应的错误响应返回给用户。在典型的 HTTP 请求的情况下,会生成一个重定向响应,而对于 AJAX 请求则会发送 JSON 响应。
5、验证如何返回中文验证提示?
除了自定义提示,还下载中文语言包,在 配置里面将语言设置为中文
1、网址:https://packagist.org composer主要的代码托管网站
2、在官网搜索laravel-lang
3、安装命令:# composer require caouecs/laravel-lang:~3.0
6、验证中字符串和数字的min和max分别代表什么?
字符串就是字符串长度,数字就是数字大小
7、lavarel使用语言包步骤(caouecs/laravel-lang插件的步骤说的特别详细)?
1、For Laravel 5.8-6.0 : run composer require caouecs/laravel-lang:~4.0 in your project folder
2、Copy the folders of languages that you want, in the resources/lang folder of your Laravel application .
3、In the file config/app.php, change the value of locale by the short name of your language .
8、如果对中文语言包中的验证的翻译不满意,要去修改哪?
修改zh-CN包中的validation.php(就是一个对应关系的数组),按照自己需求改就行
二、简单验证
一般一个框架都会提供自动验证的机制,在TP里面的验证的规则是写在模型里面进行验证的,但是自laravel里面的思想有些不一样,它的验证规则可以在控制器里面,也可以单独的写一个专门的验证文件。并且laravel里面的验证不通过情况下的提示信息和表单数据是保存在session里面的,并且验证不通过的情况下会跳到上一个页面。
在前端页面中可以通过JavaScript验证表单的数据有效性,但是如果用户的浏览器过低或者直接禁用js,则前端验证则可能会失效,这样就不能保证数据的有效性。所以后端也需做相应的验证操作,这个操作在laravel中称之为自动验证(在ThinkPHP中也有自动验证)。
1、准备工作
①可以使用有表单的页面(视图),此处可以使用之前的test12.blade.php模版文件
创建需要的路由、方法
2、验证方式一(控制器方式验证:推荐)
建议去查看手册
(1)基本语法
使用控制器中的validate方法来完成,$this->validate($request,[验证规则]);
如果验证失败,laravel会自动将用户重定向回上一个位置,并将验证错误信息一次性存放到session中。
请求验证:
扩展补充:如何得知一个请求类型?
语法:Input::method() 返回GET或者POST
(2)基本验证规则
required: 不能为空
max:255最长255个字符,
min:1最少1个字符
email:验证邮箱是否合法
confirmed:验证两个字段是否相同,如果验证的字段是password,则必须输入一个与之匹配的password_confirmation字段
integer:验证字段必须是整型
ip:验证字段必须是IP地址
numeric 验证字段必须是数值
max:value 验证字段必须小于等于最大值,和字符串,数值,文件字段的size规则一起使用。
min:value 验证字段的最小值,对字符串、数值、文件字段而言,和size规则使用方式一致。
size:value 验证字段必须有和给定值value想匹配的尺寸,对字符串而言,value是相应的字符数目,对数值而言,value是给定整型值;对文件而言,value是相应的文件字节数。
string 验证字段必须是字符串
unique:表名,字段,需要排除的ID
注意:多个验证规则可以通过 "|" 字符进行隔开
语法:$this -> validate(数据对象,[数组形式的验证规则]);
(3)输出错误信息
效果:
(4)把输出效果转换成中文
由于中文和英文都是属于语言范畴,如果要切换提示文字,则需要有中文语言包的支持。目前框架只有en语言包,则需要其他语言包需要去下载。
网址:https://packagist.org composer主要的代码托管网站
在官网搜索laravel-lang
注意:后期下载软件依赖的时候一般会综合一下下载量和收藏量进行下载选择。
①需要寻找下载命令
安装命令:# composer require caouecs/laravel-lang:~3.0
②使用composer进行安装
在项目根目录下运行上述的命令
③使用方法
翻译:
语言包文件在vendor/caoue/laravel-lang中;将你需要的语言目录复制到resources/lang目录下即可。
将需要的语言包复制到语言包目录:
根据提示:
翻译:在文件(config/app.php)中修改locale的值,改成你需要使用的语言简称。
简称其实就是语言包的文件夹名称。
测试效果:
注意:并不是所有的字段都有对应的翻译(或者有的翻译可能不是很准确),如果想自己定义翻译,则需要去修改语言包文件代码。
修改后续的值,或者新增需要的元素: