【问题标题】:How does laravel validator pass value to the variables(like :min) in validation error messages?laravel 验证器如何将值传递给验证错误消息中的变量(如:min)?
【发布时间】:2014-05-18 14:36:29
【问题描述】:

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

我的自定义验证器:

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.",

)

但是没有用。

谢谢。

【问题讨论】:

  • 你能告诉我们你是如何运行你的验证码的吗?
  • 嗨@SamyMassoud,$validator = Validator::make(['username' => Input::get('username')], ['username' => 'lengthMin:6']);

标签: laravel laravel-4


【解决方案1】:

如文档here

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

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

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

【讨论】:

    猜你喜欢
    • 2017-01-02
    • 2021-05-16
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多