Laravel 5 在错误消息中返回自定义验证方法参数
我创建了一个自定义验证函数,并为其提供了一条自定义错误消息。如何在错误消息中显示值“1000”Laravel 5 在错误消息中返回自定义验证方法参数,laravel-5,laravel-5.1,Laravel 5,Laravel 5.1,我创建了一个自定义验证函数,并为其提供了一条自定义错误消息。如何在错误消息中显示值“1000” // in my request file function rules() { return [ 'my_field' => 'myValidator:1000', ]; } // in my custom validator file public function validateMyValidator($attribut
// in my request file
function rules()
{
return [
'my_field' => 'myValidator:1000',
];
}
// in my custom validator file
public function validateMyValidator($attribute, $value, $parameters)
{
return true;
}
// in resources/lang/eng/validation.php
'custom' => [
'my_field' => [
'my_validator' => 'Value must be 1000',
],
]
您应该使用验证中的字段名作为占位符。所以这里应该是:
'my_validator' => 'Value must be :myValidator'
您必须定义自己的替换函数 让我们以Laravel内置的\Lightning\Validation\Validator中的一个现有示例为例:
protected function replaceSame($message, $attribute, $rule, $parameters)
{
return str_replace(':other', $this->getAttribute($parameters[0]), $message);
}
validation.php中对应的语言行是:
'same' => 'The :attribute and :other must match.'
因此,实际上,您必须创建一个函数,如:
function replace{$yourRuleName}($message, $attribute, $rule, $parameters) {
return str_replace()...
}
它将替换验证语言文件中您自己的自定义参数
使用Laravel 5.1的其他方法
我就是这样做的。这可能不是一个完美的验证规则,但只是举一些例子
public function boot()
{
Validator::extend('olderThan', function($attribute, $value, $parameters ) {
$minAge = ( ! empty($parameters)) ? (int) $parameters[0] : 13;
try {
return \Carbon\Carbon::now()->diff(new \Carbon\Carbon($value))->y >= $minAge;
} catch(\Exception $e) {
return false;
}
});
Validator::replacer('olderThan', function ($message, $attribute, $rule, $parameters) {
return str_replace(":value", $parameters[0], $message);
});
}
您可以在ServiceProviders的boot()方法中扩展验证器。(理想情况下,您可以创建自己的ValidationServiceProvider)
相应的语言行为:
"older_than" => "Minimum age is :value years",
你试过这个吗?我认为如果没有定义一个定制的替代品,这是行不通的。谢谢你的震惊!你能澄清一下我应该把这个方法放在哪里吗?你是说哪一个?boot()函数还是第一个?哦,没关系,你说要做一个服务提供商