龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

Laravel框架表单验证详解(4)

时间:2014-09-06 16:11来源:网络整理 作者:网络 点击:
分享到:
复制代码 代码如下: 'custom' = array( 'email' = array( 'required' = 'We need to know your e-mail address!', ), ), 定制验证规则 Laravel 提供了一系列的有用的验证规则;但是,您

复制代码 代码如下:

'custom' => array(
'email' => array(
'required' => 'We need to know your e-mail address!',
),
),

定制验证规则

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

注册一个定制的验证规则

复制代码 代码如下:

Validator::extend('foo', function($attribute, $value, $parameters)
{
return $value == 'foo';
});

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

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

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

复制代码 代码如下:

  Validator::extend('foo', 'FooValidator@validate');

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

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

扩展验证器类

复制代码 代码如下:

<?php
class CustomValidator extends Illuminate\Validation\Validator {
public function validateFoo($attribute, $value, $parameters)
{
return $value == 'foo';
}
}

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

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

复制代码 代码如下:

Validator::resolver(function($translator, $data, $rules, $messages)
{
return new CustomValidator($translator, $data, $rules, $messages);
});

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

复制代码 代码如下:

protected function replaceFoo($message, $attribute, $rule, $parameters)
{
return str_replace(':foo', $parameters[0], $message);
}

精彩图集

赞助商链接