繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM