每个用户都应该扮演一个角色(只有一个)。为此,我使用Spaties laravel许可包。
我在编辑和创建用户表单时使用了一堆单选按钮,应该可以在其中为用户选择一个角色。我可以将其与复选框配合使用,但是目前您可以选择多个复选框,从而为一个用户添加多个角色。现在,我尝试使用单选按钮,它可以工作,但不能预先选择按钮。
这是我的复选框代码:
@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
答案 0 :(得分:0)
您必须将第三个参数传递给函数 因此,尝试:
{!! Form::radio('roles[]', $role->id, TRUE) !!}
或者,如果需要先计算某些内容,则可以内联if语句
答案 1 :(得分:0)
尝试
{!! Form::radio('role', $role->id, isset($employee) ? $employee->role_id === $role->id : false) !!}
如果有该用户,请检查其角色ID,并检查其角色是否与循环中的角色ID相同(标记为已选中)
答案 2 :(得分:0)
所以,几乎没有更新:
我使用控制器中的数组将用户与角色相关联,因为我以前可以选择多个角色。现在,我将控制器更改为仅扮演一个选定的角色,并将其与用户相关联,并且可以正常工作。
代码:
@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);
那行得通,但是不是您不必手动进行表单模型绑定的整个想法吗?如果有人可以提供答案或更好的解决方案,那就太好了。