Php Laravel验证:如何在自定义验证中访问属性的规则

Php Laravel验证:如何在自定义验证中访问属性的规则,php,validation,laravel,laravel-5,Php,Validation,Laravel,Laravel 5,在下面的规则中,我有我的自定义验证customRule:*日期* $rules = [ 'my_date' => 'required|date_format: Y-m-d|customRule: someDate', ]; 在自定义验证规则扩展中,我需要访问规则的date\u格式属性: Validator::extend('customRule', function($attribute, $value, $parameters) { $format = $attribute

在下面的规则中,我有我的自定义验证
customRule:*日期*

$rules = [
  'my_date' => 'required|date_format: Y-m-d|customRule: someDate',
];
在自定义验证规则扩展中,我需要访问规则的
date\u格式
属性:

Validator::extend('customRule', function($attribute, $value, $parameters) {

   $format = $attribute->getRules()['date_format']; // I need something like this 

   return $format == 'Y-m-d';
});

如何在扩展验证器上获取特定属性的规则值

您无法访问其他规则。验证器应为独立单元-它们应使用的唯一数据为:

  • 正在验证的字段的值
  • 作为参数传递到此验证规则的值
  • 正在验证的对象的其他属性的值
似乎您需要的是一个自定义验证器,它将封装日期\格式自定义规则执行的操作:

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',
];