Laravel Controller检查多个阵列

时间:2016-03-15 03:32:06

标签: laravel laravel-5.2

我通过AJAX向我的控制器发送多个阵列,但我在验证方面遇到了麻烦。

我有2个文字输入。现在,问题在于这些输入有时都存在,但在其他时候只有一个可能存在。

<input type="text" name="typeDetails[games]" class="form-control input-global"/>
<input type="text" name="typeDetails[art]" class="form-control input-global"/>

我的JS是这样的。

var data = { 'typeDetails[games]' : [], 'typeDetails[art]' : [] };

$("input[name='typeDetails[games]']").each(function() {
    data['typeDetails[games]'].push($(this).val());
}); 

$("input[name='typeDetails[art]']").each(function() {
    data['typeDetails[art]'].push($(this).val());
});

在我的控制器中,我想(1)确保有必要的验证和(2)如果&#34;游戏&#34;数组存在,执行特定的操作,如果&#34;艺术&#34;数组存在,执行不同的操作。

$typeDetails = Input::get('typeDetails');            

if ($request->has('typeDetails.games'))
{
    return 'games';
}

if ($request->has('typeDetails.art'))
{
    return 'art';
}

这里发生的事情是,在我的控制台中,它可以正确地返回游戏&#39;,但即使是&#34;艺术&#34;数组具有值并随请求一起发送,它不会返回“艺术”。我必须在这里错过与php的基本理解。

谢谢!

ANSWER

这是我如何让它发挥作用。

$typeDetails = Input::get('typeDetails');      

    $this->validate($request, [
        'typeDetails.*.*' => 'required|max:50'
    ],[
        'required' => 'You must type in some keywords to continue.',
        'max' => 'Your input must be less than 50 characters.'
    ]);

if ($request->has('typeDetails.games'))
{
    $gameInfo = Input::get('typeDetails.games');

    foreach ($gameInfo as $key => $value)
    {
        DB::table('user_type')->insert([
            'user_id' => Auth::user()->id,
            'type_id' => '1',
            'user_type_details' => $value,
            'created_at' => Carbon::now()
        ]);   
    }        
}

if ($request->has('typeDetails.art'))
{
    $artInfo = Input::get('typeDetails.art');

    foreach ($artInfo as $key => $value)
    {
        DB::table('user_type')->insert([
            'user_id' => Auth::user()->id,
            'type_id' => '2',
            'user_type_details' => $value,
            'created_at' => Carbon::now()
        ]);

    }
}

0 个答案:

没有答案