在以下规则中,我有自定义验证customRule: *date*
$rules = [
'my_date' => 'required|date_format: Y-m-d|customRule: someDate',
];
在我的自定义验证规则扩展程序中,我需要访问规则的date_format
属性:
Validator::extend('customRule', function($attribute, $value, $parameters) {
$format = $attribute->getRules()['date_format']; // I need something like this
return $format == 'Y-m-d';
});
如何在扩展验证器上获取某些属性的规则值?
答案 0 :(得分:1)
您无法访问其他规则。验证器应该是独立的单元 - 它们应该使用的唯一数据是:
您需要的是一个自定义验证器,它将包装 date_format 和 customRule 执行的操作:
Validator::extend('custom_date_format', function($attribute, $value, $parameters) {
$format = $parameters[0];
$someDate = $parameters[1];
$validator = Validator::make(['value' => $value], ['value' => 'date_format:' . $format]);
//validate dateformat
if ($validator->fails()) {
return false;
}
//validate custom rule using $format and $someDate and return true if passes
});
一旦你拥有它,你就可以这样使用它:
$rules = [
'my_date' => 'required|custom_date_format:Y-m-d,someDate',
];