laravel验证器如何将值传递给验证错误消息中的变量(如:min)?

时间:2014-05-12 11:06:36

标签: laravel laravel-4

我添加了自定义验证,除了自定义错误消息外,它正常工作。

我的自定义验证器:

public function getLength($value) {

    return (strlen($value) + mb_strlen($value, 'utf8'))/2;

}

public function validateLengthMin($attribute, $value, $parameters) {

    return $this->getLength($value) >= $parameters[0];

}

我的自定义错误消息:

'custom' => array(

    'username' => array(

          'length_min' => 'The :attribute must be at least :min characters.',

    )
)

我收到的错误消息是:用户名必须至少为:min个字符。我希望获得的是我在验证中的最小长度(即lengthMin:6,我得到6而不是:min。)

另一个问题是我希望错误消息适用于所有输入,而不仅仅是username。因此我尝试了这个:

'custom' => array(

     "length_min" => "The :attribute must be at least :min characters.",

)

但它没有用。

感谢。

1 个答案:

答案 0 :(得分:1)

与文档here一样

  

创建自定义验证规则时,有时可能需要   定义错误消息的自定义占位符替换。你可能会这样做   所以通过如上所述创建自定义Validator,并添加一个   将replaceXXX函数替换为验证器。

然后你必须在你的自定义验证器类中创建替换器函数,如

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