Laravel - 在动态表的每一行内附加行id以形成name属性

时间:2017-02-28 14:08:05

标签: php laravel blade

我将两个变量发送到我的视图$abilities$users$abilities是一个键值对数组,包含以下格式的数据:

["1"=>"create_user","2"=>"delete_user","3"=>"ban_user"]

$users是以下格式的数组:

["1"=>"John Doe","2"=>"Jane Doe"]

两者都来自各自的数据库abilities(列:ID,名称)和users(列:ID,名称)。

在视图中,我有一个表格,其中包含针对$user->id的每一行的多重选择:

@foreach($users as $user)
<tr>
    <td>{{$user->id}}</td>
    <td>
       {{Form::select("takenabilities[]",$abilities, null, ['id'=>'system-abilities','multiple','class'=>'form-control' ])}}
   </td>
</tr>
@endforeach

问题是,当我在控制器中收到请求时,我只看到一个takenabilities[]数组,并且我想在动态生成的每一行中保存每个多选的数据,如果这有意义的话?

1 个答案:

答案 0 :(得分:1)

使用同名的多个选择不能这样做。最后一个的值将覆盖所有先前选择的值。此外,您最好为每个id分配不同的select。尝试为数组添加另一个级别:

@foreach($users as $user)
<tr>
    <td>{{$user->id}}</td>
    <td>
       {{Form::select("takenabilities[$user->id][]", $abilities, null, ['id'=>'system-abilities-' . $user->id,'multiple','class'=>'form-control' ])}}
   </td>
</tr>
@endforeach

在控制器中:

$takenabilities = [];
foreach(Request::input('takenabilities') as $userId => $userAbilities) {
    $takenabilities = array_merge($takenabilities, $userAbilities);
}
$takenabilities = array_unique($takenabilities);