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

laravel validate学习笔记

2015-06-04 14:13 681 查看
Laravel 自带一个简单、方便的
Validation
类用于验证数据以及获取错误消息。 http://www.cnblogs.com/yjf512/p/4324159.html 在model里面定义
public function checkValidate($data){
$rules = array(
'email' => 'required|email',
'name' => 'required|between:1,20',
'password' => 'required|min:8',
);
$message = array(
"required"             => ":attribute 不能为空",
"between"      => ":attribute 长度必须在 :min 和 :max 之间"
);

$attributes = array(
"email" => '电子邮件',
'name' => '用户名',
'password' => '用户密码',
);

$validate = Validator::make($data,$rules,$message,$attributes);
return $validate;
}
在controller 里面 调用
public function test_Validator(){$data = Input::all();$user = new User();$validate = $user->checkValidate($data);if($validate->fails()){$warnings = $validate->messages();$show_warning = $warnings->first();print_r($warnings);print_r($show_warning);}else{echo 'aaa';}}

Validator的验证扩展

验证规则扩展

你一定会遇到比如要验证是否手机号合法的问题,laravel的Validator没有提供手机号验证的规则,因为每个国家的手机号规则是不统一的。但是这个使用想使用Validator做验证怎么办呢?
Validator::extend('mobile', function($attribute, $value, $parameters){return preg_match('/^0?(13[0-9]|15[012356789]|18[0-9]|14[57])[0-9]{8}$/', $value);});
然后在rule中就可以使用mobile做为规则了。这种扩展验证规则放到哪里呢?我建议是在filters同级目录下增加一个validator.php,然后再start/global.php中
require app_path().'/validator.php';

输出信息统一提示

上面的那个例子中,message和attribute都需要在使用validator的时候自己定义,比较麻烦,有没有更好的方法能统一设置呢?validator的提示设置是按照语言来进行设置的。语言设置是config目录下的app.php里面的locale界定的。默认为en。而en对应的错误提示都在lang目录下的en目录里面的validation.php中设置。你可以看一眼lang/en/validation.php 就明白对应的英文提示信息怎么出来的了。要设置中文提示:修改config/app.php里面的locale,设置为ch创建 lang/ch/validation.php修改validation.php文件,将里面的提示信息修改为中文,注意提示信息中的:attribute在显示的时候会被替换成对应属性名称,attributes是设置属性的中文名字的。从这里也就看出来了laravel对跨语言的支持是什么样子的。lang下面的文件夹除了validation.php之外还有分页:pagination.php,提示:reminders.php文件。

laravel自带了哪些rule规则呢?

查看手册吧。。。laravel自带的验证规则
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  invalidate laravel