Laravel 自定义验证消息参数

Posted

技术标签:

【中文标题】Laravel 自定义验证消息参数【英文标题】:Laravel custom validation message parameter 【发布时间】:2016-01-29 13:35:23 【问题描述】:

我正在使用 laravel 5.1。我有一个summernotejs 表单元素。我已经成功创建了一个自定义验证规则,它采用从表单输入提供的 html,去除标签,并对文本内容进行 strlen() 调用。因此,我可以看到没有任何标签的消息的长度。

这是我的验证规则:

Validator::extend('strip_min', function ($attribute, $value, $parameters, $validator) 
    return strlen(strip_tags($value)) >= $parameters[0];
);

我通过指定strip_min:10strip_min:20等来调用验证规则,其中数字是剥离标签后的最小字符串长度。

我想添加一条自定义消息,说内容长度至少需要n 个字符。

关于这方面的 Laravel 文档是无用的。我打开了我的 validation.php 文件,其中包含所有错误消息。

我已将密钥 strip_min 添加到消息数组中,消息为:The :attribute must be at least :min characters.

当我测试它时,我收到错误消息:

The notice must be at least :min characters.

如何将:min 转换为验证规则中指定的数字?!我有read the documentation,但到处都是,我无法理解如何简单地将 :min 替换为给定的数字。

【问题讨论】:

【参考方案1】:

发现了。

Validator::extend('strip_min', function ($attribute, $value, $parameters, $validator) 

    $validator->addReplacer('strip_min', function($message, $attribute, $rule, $parameters)
        return str_replace([':min'], $parameters, $message);
    );

    return strlen(strip_tags($value)) >= $parameters[0];
);

【讨论】:

【参考方案2】:

在validation.php文件中使用这个

    'strip_min' => 'The :attribute must be at least :strip_min characters.'        

【讨论】:

以上是关于Laravel 自定义验证消息参数的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 验证自定义消息

Laravel 5.3 自定义验证消息数组

Laravel Spark 中的自定义验证消息

laravel api 验证自定义消息

Laravel 自定义验证消息

在 Laravel 中验证数组时,如何使用数组项规则添加验证自定义消息?