在Laravel中验证前运行任务


Run task before validation in Laravel

好的,所以我有一个表单,它要求用户:-

  • 他们出生的日期(0-31等)
  • 他们出生的月份(1月-12月)
  • 他们出生的年份

然后我用进行验证

$rules = array(
    '???'   => 'required:date'
);
$validator = Validator::make($data, $rules);

但我不知道我可以在哪里/做什么来将日期、月份、年份放入我可以放入验证的内容中,无论是在视图中还是在验证过程中。

谢谢,Tom

如果您想使用链接的验证规则,您的日期需要以Laravel的日期分析器能够识别的格式(dd-mm-yyyy、dd/mm/yy、yyyy-mm-dd等)作为单个字段输入,因此在这种情况下,您的表单应该真正包含一个名为"日期"的文本字段。

如果它是三个独立的字段,那么在它们接近验证器之前,您需要将它们转换为一个字段。可能是这样的:

$rules = [
    'name'  => ['required'],
    'email' => ['required', 'email'],
    'date'  => ['required', 'date'],
];
// transform date from three separate fields to yyyy-mm-dd
// TODO: ensure the things are zero-padded maybe?
$date = Input::get('year').'-'.Input::get('month').'-'.Input::get('day');
$v = Validator::make(
    Input::only('name', 'email') + ['date' => $date],
    $rules
);