Laravel 5表单模型绑定单选按钮

时间:2018-09-19 23:08:09

标签: php html laravel forms radio-button

每个用户都应该扮演一个角色(只有一个)。为此,我使用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

3 个答案:

答案 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);

那行得通,但是不是您不必手动进行表单模型绑定的整个想法吗?如果有人可以提供答案或更好的解决方案,那就太好了。