Laravel - 规则中的多个文件验证

时间:2015-11-18 10:09:53

标签: validation laravel request

我想弄清楚如何解决这个问题......我有一个包含4个输入的表单:beginDate,beginHour,endDate,endHour。我有一个助手返回一个日期对象,需要日期和小时并将其与碳混合...现在我必须检查开始日期是否小于结束日期...我想在请求文件中执行此操作... 有什么建议 ?谢谢!

public function rules()
{
$rules = [
    'beginDate' => 'required|date',
    'beginHour' => 'required',
    'endDate' => 'required|date',
    'endHour' => 'required',
    'user_list' => 'required',
];

$begin = Helper::mergeDateHour($this->beginDate,$this->beginHour);
$end = Helper::mergeDateHour($this->endDate,$this->endHour);

if(!$begin->lt($end)){
    return false;
}

return $rules;
}

1 个答案:

答案 0 :(得分:0)

如果您只是想查看日期,可以这样做。

    'endDate' => 'required|date|after:beginDate'

如果没有,您可以尝试使用DateTime。 例如,

    $validator = Validator::make(Input::all(), User::$test);
    if ($validator->passes()) {
        $beginDate = Input::get("beginDate");
        $beginHour = Input::get("beginHour"); // assumming H:i
        $endDate = Input::get("endDate");
        $endHour = Input::get("endHour");            
        $begin = new DateTime(date("Y-m-d H:i:s", strtotime($beginDate." ".$beginHour.":00")));
        $end = new DateTime(date("Y-m-d H:i:s", strtotime($endDate." ".$endHour.":00")));

        if($begin > $end)
          echo "1 is faster";//return and say end supposed to be faster
        else
          echo "2 is faster";


    } else {
        return Redirect::back()->with('message', 'Please fix the following errors:')->withErrors($validator)->withInput();
    }