我创建了一个自定义验证函数以及一个自定义错误消息。如何在错误消息中显示值“1000”?
// 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',
],
]
答案 0 :(得分:1)
您必须定义自己的替换功能。
让我们从Laravel内置的\ Illuminate \ 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()...
}
在验证语言文件中替换您自己的自定义参数。
这就是我如何做那种事情。它可能不是一个完美的验证规则,只是举一些例子。
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'中扩展Validator。 boot()方法。 (理想情况下,您将创建自己的ValidationServiceProvider)
相应的语言行为:
"older_than" => "Minimum age is :value years",
答案 1 :(得分:0)
您应该使用验证下的字段名称作为占位符。所以这应该是:
'my_validator' => 'Value must be :myValidator'