我通过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()
]);
}
}