Laravel 5从选定字段验证出生日期

Laravel 5从选定字段验证出生日期,laravel,select,Laravel,Select,我有一个带有3个选择字段(月、日、年)的注册表,我想抓取这些字段,将其转换为正确的日期格式并进行验证。下面是3个选择框 <div class="birthday_selects"> <select name="birthday_month"> .... </select> <select name="birthday_day"> .... </select> <select

我有一个带有3个选择字段(月、日、年)的注册表,我想抓取这些字段,将其转换为正确的日期格式并进行验证。下面是3个选择框

<div class="birthday_selects">
    <select name="birthday_month">
    ....
    </select>
    <select name="birthday_day">
    ....
    </select>
    <select name="birthday_year">
    ....
    </select>
</div>
好的,我可以dd($birthday),它在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);
}
当只是需要它时,它就不起作用了


谢谢你的帮助。谢谢

它不起作用,因为你做错了。它的问题在于规则。
规则键必须出现在表单字段的名称中。 对于你的答案,让我们假设$birth将是'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.        
}

它不起作用,因为你做错了。它的问题在于规则。
规则键必须出现在表单字段的名称中。 对于你的答案,让我们假设$birth将是'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.        
}

创建碳日期并添加新的[出生日]输入:

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

希望这将帮助您创建碳日期并添加新的[出生日]输入:

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

希望这将有助于您使用Lightlight\Support\Facades\Input它应该可以工作。
使用light\Support\Facades\Input应该可以。好的,谢谢。除了正确的语法之外,我正在试图找出如何逻辑地解决它。使用您在那里的规则,我们要求每个选择菜单中都有一些内容,并且它是一个数值,但问题是如何组合3个选择框(我之前提供过),并将该日期与今天进行比较,以查看它是否大于13。您以前的代码可以正确执行您正在执行的操作。你的要求就像用勺子喂。我不能那样做。很抱歉但我可以给你资源。1.2.快乐编码:)好的,谢谢。除了正确的语法之外,我正在试图找出如何逻辑地解决它。使用您在那里的规则,我们要求每个选择菜单中都有一些内容,并且它是一个数值,但问题是如何组合3个选择框(我之前提供过),并将该日期与今天进行比较,以查看它是否大于13。您以前的代码可以正确执行您正在执行的操作。你的要求就像用勺子喂。我不能那样做。很抱歉但我可以给你资源。1.2.快乐编码:)如果年、月或日为空,createFromFormat将失败。如何处理?您可以在提交数据之前进行验证:例如:
12。。。12
如果年、月或日为空,则createFromFormat将失败。如何处理?您可以在提交数据之前进行验证:例如:
12。。。12