2015-08-16 96 views
1

在下面的规则,我有我的自定义验证customRule: *date*Laravel验证:如何访问属性的规则定制验证

​​

里面我自定义的验证规则扩展,我需要访问规则的date_format属性:

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

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

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

如何获得扩展验证器上某些属性的规则值?

回答

1

您不能访问其他规则。验证器是独立的单元 - 应该使用的唯一数据是:字段的

  • 值被验证传递给此验证规则
  • 值作为参数对象的其他属性的
  • 值被验证

看来,你需要的是一个自定义的验证,将包是什么DATE_FORMATcustomRule做:

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