Laravel框架表单验证详解

基础验证例子

代码如下:
'Dayle'), array('name' => 'required|min:5') );

传递给 make 函数的第一个参数是待验证的数据,第二个参数是对该数据需要应用的验证规则。

多个验证规则可以通过 "|" 字符进行隔开,或者作为数组的一个单独的元素。

通过数组指定验证规则

代码如下:
'Dayle'), array('name' => array('required','min:5')) );

一旦一个 Validator 实例被创建,可以使用 fails (或者 passes)函数执行这个验证。

代码如下:
fails()) { // The given data did not pass validation }
如果验证失败,您可以从验证器中获取错误消息。
代码如下:
messages();
您也可以使用 failed 函数得到不带错误消息的没有通过验证的规则的数组。
代码如下:
failed();

文件验证

Validator 类提供了一些验证规则用于验证文件,比如 size、mimes等。在验证文件的时候,您可以和其他验证一样传递给验证器。

附带错误消息

在一个 Validator 实例上调用 messages 函数之后,将会得到一个 MessageBag 实例,该实例拥有很多处理错误消息的方便的函数。

获取一个域的第一个错误消息

代码如下:
first('email');

获取一个域的全部错误消息

代码如下:
get('email') as $message) { // }

获取全部域的全部错误消息

代码如下:
all() as $message) { // }

检查一个域是否存在消息

代码如下:
has('email')) { // }
以某种格式获取一条错误消息

代码如下:
first('email','

:message

');
  注意: 默认情况下,消息将使用与 Bootstrap 兼容的语法进行格式化。

  以某种格式获取所有错误消息

代码如下:
all('
  • :message
  • ') as $message)   {   //   }

    错误消息 & 视图

    一旦您执行了验证,您需要一种简单的方法向视图反馈错误消息。这在 Lavavel 中能够方便的处理。以下面的路由作为例子:

    代码如下:
    fails()) { return Redirect::to('register')->withErrors($validator); } });
    注意当验证失败,我们使用 withErrors 函数把 Validator 实例传递给 Redirect。这个函数将刷新 Session 中保存的错误消息,使得在下次请求中能够可用。

    然而,注意我们没有必要明确的在 GET 路由中绑定错误消息到路由。这是因为 Laravel 总会检查 Session 中的错误,并自动绑定它们到视图如果它们是可用的。所以,对于每个请求,一个 $errors 变量在所有视图中总是可用的,允许您方便的认为 $errors 总是被定义并可以安全使用的。$errors 变量将是一个 MessageBag 类的实例。

    所以,在跳转之后,您可以在视图中使用自动绑定的 $errors 变量:

    代码如下:
    first('email'); ?>
      可用的验证规则

      下面是一个所有可用的验证规则的列表以及它们的功能:

    代码如下:

    accepted

    验证此规则的值必须是 yes、 on 或者是 1。这在验证是否同意"服务条款"的时候非常有用。

    active_url

    验证此规则的值必须是一个合法的 URL,根据 PHP 函数 checkdnsrr。

    after:date

    验证此规则的值必须在给定日期之后,日期将通过 PHP 函数 strtotime 传递。

    alpha   验证此规则的值必须全部由字母字符构成。

    alpha_dash   验证此规则的值必须全部由字母、数字、中划线或下划线字符构成。

    alpha_num   验证此规则的值必须全部由字母和数字构成。

    before:date   验证此规则的值必须在给定日期之前,日期将通过 PHP 函数 strtotime 传递。

    between:min,max   验证此规则的值必须在给定的 min 和 max 之间。字符串、数字以及文件都将使用大小规则进行比较。

    confirmed   验证此规则的值必须和 foo_confirmation 的值相同。比如,需要验证此规则的域是 password,那么在输入中必须有一个与之相同的 password_confirmation 域。

    date   验证此规则的值必须是一个合法的日期,根据 PHP 函数 strtotime。

    date_format:format   验证此规则的值必须符合给定的 format 的格式,根据 PHP 函数 date_parse_from_format。

    different:field   验证此规则的值必须与指定的 field 域的值不同。

    email   验证此规则的值必须是一个合法的电子邮件地址。

    exists:table,column   验证此规则的值必须在指定的数据库的表中存在。

      Exists 规则的基础使用

    代码如下:
    'exists:states'
    指定列名
    代码如下:
    'exists:states,abbreviation'
    您也可以指定更多的条件,将以 "where" 的形式添加到查询。
    代码如下:
    'exists:staff,email,account_id,1'

    image   验证此规则的值必须是一个图片 (jpeg,png,bmp 或者 gif)。

      in:foo,bar,...

      验证此规则的值必须在给定的列表中存在。

      integer

      验证此规则的值必须是一个整数。

      验证此规则的值必须是一个合法的 IP 地址。

    max:value

      验证此规则的值必须小于最大值 value。字符串、数字以及文件都将使用大小规则进行比较。

      mimes:foo,...

      验证此规则的文件的 MIME 类型必须在给定的列表中。

      MIME 规则的基础使用

    代码如下:
    'mimes:jpeg,bmp,png'

    min:value   验证此规则的值必须大于最小值 value。字符串、数字以及文件都将使用大小规则进行比较。

    not_in:foo,...

      验证此规则的值必须在给定的列表中不存在。

    numeric

      验证此规则的值必须是一个数字。

    regex:pattern

      验证此规则的值必须符合给定的正则表达式。

      注意: 当使用 regex 模式的时候,有必要使用数组指定规则,而不是管道分隔符,特别是正则表达式中包含一个管道字符的时候。

    required

      验证此规则的值必须在输入数据中存在。

    required_if:field,value

      当指定的域为某个值的时候,验证此规则的值必须存在。

    required_with:foo,...

      仅当指定的域存在的时候,验证此规则的值必须存在。

    required_without:foo,...

      仅当指定的域不存在的时候,验证此规则的值必须存在。

    same:field

      验证此规则的值必须与给定域的值相同。

    size:value

    验证此规则的值的大小必须与给定的 value 相同。对于字符串,value 代表字符的个数;对于数字,value 代表它的整数值,对于文件,value 代表文件以KB为单位的大小。

    unique:table,column,except,idColumn

    验证此规则的值必须在给定的数据库的表中唯一。如果 column 没有被指定,将使用该域的名字。

    Unique 规则的基础使用

    代码如下:
    'unique:users' 指定列名 'email' => 'unique:users,email_address' 强制忽略一个给定的 ID 'email' => 'unique:users,email_address,10'

    url

      验证此规则的值必须是一个合法的 URL。

      定制错误消息

      如果有需要,您可以使用定制的错误消息代替默认的消息。这里有好几种定制错误消息的方法。

      传递定制消息到验证器

    代码如下:
    'The :attribute field is required.',  );  $validator = Validator::make($input,$rules,$messages);

    注意: :attribute 占位符将被实际的进行验证的域的名字代替,您也可以在错误消息中使用其他占位符。

    其他验证占位符

    代码如下:
    'The :attribute and :other must match.',   'size' => 'The :attribute must be exactly :size.',   'between' => 'The :attribute must be between :min - :max.',   'in' => 'The :attribute must be one of the following types: :values',   );
      有些时候,您可能希望只对一个指定的域指定定制的错误消息:

      对一个指定的域指定定制的错误消息

    代码如下:
    'We need to know your e-mail address!', );
    在一些情况下,您可能希望在一个语言文件中指定错误消息而不是直接传递给 Validator。为了实现这个目的,请在 app/lang/xx/validation.php 文件中添加您的定制消息到 custom 数组。

    在语言文件中指定错误消息

    代码如下:
    array( 'email' => array( 'required' => 'We need to know your e-mail address!', ),

    定制验证规则

    Laravel 提供了一系列的有用的验证规则;但是,您可能希望添加自己的验证规则。其中一种方法是使用 Validator::extend 函数注册定制的验证规则:

    注册一个定制的验证规则

    代码如下:

    注意: 传递给 extend 函数的规则的名字必须符合 "snake cased" 命名规则。

      定制的验证器接受三个参数:待验证属性的名字、待验证属性的值以及传递给这个规则的参数。

      您也可以传递一个类的函数到 extend 函数,而不是使用闭包:

    代码如下:
      注意您需要为您的定制规则定义错误消息。您既可以使用一个行内的定制消息数组,也可以在验证语言文件中进行添加。

      您也可以扩展 Validator 类本身,而不是使用闭包回调扩展验证器。为了实现这个目的,添加一个继承自 Illuminate\Validation\Validator 的验证器类。您可以添加在类中添加以 validate 开头的验证函数:

    扩展验证器类

    代码如下:

    下面,您需要注册定制的验证器扩展:

    您需要注册定制的验证器扩展

    代码如下:

      当创建一个定制的验证规则,您有时需要为错误消息定义一个定制的占位符。为了实现它,您可以像上面那样创建一个定制的验证器,并且在验证器中添加一个 replaceXXX 函数:

    代码如下:

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐


    laravel的dd函数不生效怎么办
    看不懂laravel文档咋办
    安装laravel框架出现command怎么办
    Laravel开发API怎么使用事务
    laravel怎么构建复杂查询条件
    laravel如何实现防止被下载
    为什么laravel比yii火
    一些常见的Laravel定时任务不运行的问题
    laravel用路由有什么好处
    composer无法安装laravel怎么办
    laravel现在还用吗
    laravel怎么替换主键id
    laravel的appurl有什么用
    如何修改Laravel的报错输出形式
    laravel怎么避免foreach查表
    laravel怎样操作数据库
    laravel怎么截取字符串
    laravel 是国内的吗
    laravel怎么设置请求头
    浅析Laravel社区Redis组件报错的问题和解决方法