2014-10-27 121 views
0

好了,所以我必須在它要求用戶輸入一個形式: -運行任務Laravel驗證之前

  • 在他們出生的那一天(0-31等)
  • 月份在他們出生(一月至十二月)
  • 在他們出生

然後我和驗證此年份:

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

但是我不知道在哪裏/我可以做些什麼來將日期,月份,年份放入我可以放入驗證的內容中,無論是在視圖還是在驗證過程中。

感謝, 湯姆

+1

如果事情不正確,你會不會最好地單獨驗證每個輸入以產生更多可用的錯誤代碼?也許Input :: get('date')的範圍是1-31,Input :: get('year')的範圍是1920-2014,Input :: get('month')可以是月份的名稱或範圍1-12? – Mason8r 2014-10-27 14:51:05

+0

我不確定,因爲我打算這樣做:http://stackoverflow.com/questions/23081654/check-age-with-laravel-validation-rules#23082367驗證用戶的年齡。 – 2014-10-27 14:55:48

+0

所以你想把它變成一個日期?也許有輸入和strtotime()函數的東西? – Mason8r 2014-10-27 14:59:26

回答

1

如果你想用你的約會需要進來作爲一個格式的單個字段Laravel的日期解析器將能夠識別(DD-MM-YYYY鏈接的驗證規則, dd/mm/yy,yyyy-mm-dd等) - 所以在這種情況下,表單應該包含一個名爲'date'的文本字段。

如果它作爲三個單獨的字段出現,則需要在它們靠近驗證程序之前將它們變成單個字段。這樣的事情可能是這樣的:

$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 
);