laravel validate学习笔记

来源:互联网 发布:剑网三数据互通查询 编辑:程序博客网 时间:2024/06/16 01:09

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';

输出信息统一提示

上面的那个例子中,messageattribute都需要在使用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自带的验证规则



0 0