Laravel 5 Form Model Binding Radiobutton - PullRequest
       10

Laravel 5 Form Model Binding Radiobutton

0 голосов
/ 20 сентября 2018

Предполагается, что у каждого пользователя есть роль (только одна).Для этой цели я использую пакет разрешений Sparaes 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 голосов
/ 20 сентября 2018

Попробуйте

{!! Form::radio('role', $role->id, isset($employee) ? $employee->role_id === $role->id : false) !!}

Если у вас есть пользователь, проверьте его идентификатор роли и, если он совпадает с идентификатором в цикле, помечен как выбранный

0 голосов
/ 20 сентября 2018

Итак, небольшое обновление:

Я использовал массив в своем контроллере, чтобы связать пользователей с ролями, так как раньше я мог выбирать несколько ролей.Теперь я изменил свой контроллер, чтобы взять только одну выбранную роль и связать ее с пользователем, и это работает.

Код:

      @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);

Это работает, но разве вся идея связывания модели формы заключается в том, что вам не нужно делать это вручную?Если бы кто-то мог дать ответ или лучшее решение, это было бы здорово.

0 голосов
/ 20 сентября 2018

Вы должны передать третий параметр в функцию. Попробуйте:

{!! Form::radio('roles[]', $role->id, TRUE) !!}

Или вместо этого вы можете сделать встроенное выражение if, если вам нужно сначала что-то вычислить

...