[英]Laravel 5 Form Model Binding Radiobutton
每个用户都应该扮演一个角色(只有一个)。 为此,我使用Spaties laravel-permission软件包。
我在编辑和创建用户表单时使用了一堆单选按钮,应该可以在其中为用户选择一个角色。 我可以将其与复选框配合使用,但是目前您可以选择多个复选框,从而为一个用户添加多个角色。 现在,我尝试使用单选按钮,它可以工作,但不能预先选择按钮。
这是我的复选框代码:
@foreach ($roles as $role)
@role('administrator')
{!! Form::checkbox('roles[]', $role->id) !!}
{!! Form::label($role->name, ucfirst($role->name)) !!}<br>
@endrole
@role('manager')
@if(!($role->name == 'administrator'))
{!! Form::checkbox('roles[]', $role->id) !!}
{!! Form::label($role->name, ucfirst($role->name)) !!}<br>
@endif
@endrole
@endforeach
这是我的单选按钮代码:
@foreach ($roles as $role)
@role('administrator')
{!! Form::radio('roles[]', $role->id) !!}
{!! Form::label($role->name, ucfirst($role->name)) !!}<br>
@endrole
@role('manager')
@if(!($role->name == 'administrator'))
{!! Form::radio('roles[]', $role->id) !!}
{!! Form::label($role->name, ucfirst($role->name)) !!}<br>
@endif
@endrole
@endforeach
您必须将第三个参数传递给函数,因此请尝试:
{!! Form::radio('roles[]', $role->id, TRUE) !!}
或者,如果需要先计算某些内容,则可以内联if语句
尝试
{!! Form::radio('role', $role->id, isset($employee) ? $employee->role_id === $role->id : false) !!}
如果您有该用户,请检查其角色ID,以及该角色ID是否与循环中的ID相同(标记为已选中)
因此,几乎没有更新:
我可以使用控制器中的数组将用户与角色相关联,因为我以前可以选择多个角色。 现在,我将控制器更改为仅扮演一个选定的角色,并将其与用户相关联,并且可以正常工作。
码:
@foreach ($roles as $role)
@role('administrator')
{!! Form::radio('role', $role->id, $employee->hasRole($role)) !!}
{!! Form::label($role->name, ucfirst($role->name)) !!}<br>
@endrole
@role('manager')
@if(!($role->name == 'administrator'))
{!! Form::radio('role', $role->id, $employee->hasRole($role)) !!}
{!! Form::label($role->name, ucfirst($role->name)) !!}<br>
@endif
@endrole
@endforeach
控制器:
$role = $request->get('role');
$employee->syncRoles($role);
那行得通,但是不是您不必手动进行表单模型绑定的整个想法吗? 如果有人可以提供答案或更好的解决方案,那就太好了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.