Laravel表单更新多条记录

时间:2016-06-16 13:32:23

标签: forms laravel

我有一个用户列表,对于列表中的每个用户,都有一个选择框,其中显示了所选的值角色值。

我正在考虑如何允许使用提交按钮将每个用户的所有修改发送到应该更新角色的控制器的方法。我不知道。

这是正确运作的表格:

{!!Form::open(['url' => ['admin/users/edit'], 'class' => 'form-horizontal', 'method' => 'POST']) !!}

@foreach($users as $user)
    <div class="form-group">
        <div class="list-user-element">{!! $user->name !!}</div>
        <div class="list-user-email">{!! $user->email !!}</div>
        <div>
            {!! Form::select('role', $roles, $user->role->label, ['class' => 'form-control']); !!}
        </div>
    </div>
@endforeach

<div class="form-group">        
    <div class="col-sm-offset-2 col-sm-5"> 
        {!! Form::submit('Update', array('class' => 'btn btn-warning')) !!}
    </div>
</div>

{!! Form::close() !!}  

我不知道如何准备控制器,也不知道哪种信息传递给控制器​​。

Route::post('admin/users/edit', 'AdminController@showRegisteredUsersRoles');

这里它给出了错误:

public function editRegisteredUsersRoles(Request $request)
{
    dd($request);
} 

2 个答案:

答案 0 :(得分:1)

你可以做这样的表格

{!! Form::select('users[' . $user->id . '].role', $roles, $user->role->label, ['class' => 'form-control']); !!}

然后在控制器中

public function editRegisteredUsersRoles(Request $request)
{
    foreach ($request->users as $user_id => $role) {
       //...
    }
} 

答案 1 :(得分:0)

我不是100%确定您的问题是什么,您是否说dd($request)时请求中没有所有用户的角色?

我认为问题在于你是在循环用户抛出带有相同名称的选择框。通常,当您发送POST请求时,您可以通过说$_POST[<Form's name>]来访问该信息,因此这里可能存在重复问题。也许你应该尝试类似的东西:

{!! Form::select('role' . $user->id, $roles, $user->role->label, ['class' => 'form-control']); !!}

我上面改变的只是将用户的id添加到名称'role',以使每个都成为唯一的。