$messages = array(
'same' => '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',
);
有些时候,您可能希望只对一个指定的域指定定制的错误消息:
对一个指定的域指定定制的错误消息
复制代码 代码如下:
$messages = array(
'email.required' => 'We need to know your e-mail address!',
);
在一些情况下,您可能希望在一个语言文件中指定错误消息而不是直接传递给 Validator。为了实现这个目的,请在 app/lang/xx/validation.php 文件中添加您的定制消息到 custom 数组。
在语言文件中指定错误消息
复制代码 代码如下:
'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);
}
您可能感兴趣的文章: