【问题标题】:Laravel Form update multiple recordsLaravel Form 更新多条记录
【发布时间】:2016-06-16 21:46:50
【问题描述】:

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

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

这是正确工作的表单:

{!!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);
} 

【问题讨论】:

  • 另外,重新检查您的路线

标签: forms laravel


【解决方案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) {
       //...
    }
} 

【讨论】:

    【解决方案2】:

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

    我认为问题在于您正在循环用户扔下具有相同名称的选择框。一般来说,当你发送一个 POST 请求时,你通过说$_POST[&lt;Form's name&gt;] 来访问信息,所以这里可能存在重复的问题。也许您应该尝试以下方法:

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

    我在上面所做的更改只是将用户的 id 附加到名称“角色”上,以使每个人都独一无二。

    【讨论】:

      猜你喜欢
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      相关资源
      最近更新 更多