我有一个包含3个选择字段(月,日,年)的注册表单,我想抓取,转换为正确的日期格式,然后验证。所以,下面是3个选择框。
<div class="birthday_selects">
<select name="birthday_month">
....
</select>
<select name="birthday_day">
....
</select>
<select name="birthday_year">
....
</select>
</div>
我已经读过我可以使用以下内容,但是我收到错误“... Http \ Input not found ...”
$birthday = Input::get('birthday_month')."-".Input::get('birthday_day')."-".Input::get('birthday_year')'
好吧,我可以dd($生日)并且它在m-d-y中出现,因为我在那里连接。现在,我正在尝试根据之前的日期验证该日期(以查看用户是否> 13岁)。我正在使用以下内容,但没有运气。
public function postSignup(Request $request)
{
$birthdate = Input::get('birthday-month')."-".Input::get('birthday-day')."-".Input::get('birthday-year');
$this->validate($request, [
$birthdate => 'required',
]);
dd($birthdate);
}
当需要它时,它不起作用。
感谢您的帮助。谢谢!
答案 0 :(得分:0)
它没有用,因为你做错了。这有什么问题是规则。
规则键必须出现在表单字段的名称中。
对于你的回答,让我们假设$ birthday将是'jul-15-1992'。并且你将把变量放在规则中作为关键。所以,这是无效的,因为该字段永远不会出现在表单字段中。
public function formPost(Request $request)
{
$rule = [
'birth_year' => 'required|numeric',
'birth_day' => 'required|numeric',
'birth_month' => 'required|numeric', // may be a string
];
$this->validate($request, $rule);
// check if the day is valid for the month manually.
// then form the DOB now.
}
答案 1 :(得分:0)
创建Carbon日期并添加新的[birth_day]输入:
$all = $request->all();
$year = $all['birthday_year'];
$month = $all['birthday_month'];
$day = $all['birthday_day'];
// Create Carbon date
$date = Carbon::createFromFormat('Y-m-d', $year.'-'.$month.'-'.$day);
//add new [birth_day] input
$request->request->add(['birth_day' => $date->format('Y-m-d')]);
$validatedData = $request->validate([
'first_name' => 'required|string|max:255',
'last_name' => 'required|string|max:255',
'email' => 'required|string|email|max:255',
'password' => 'required|string',
'birth_day' => 'required|date_format:Y-m-d|before:today',// validate birth day
]);
希望这对您有帮助