Laravel 5.5 — установите флажок, если роль имеет разрешение

У меня есть следующий код, который работает с пакетом Form Collective, однако сейчас он не работает, так как пакет не был обновлен до версии 5.5. Я также использую пакет разрешений Laravel Spatie

Код у меня есть

@foreach ($permissions as $permission)

{{Form::checkbox('permissions[]',  $permission->id, $role->permissions ) }}
{{Form::label($permission->name, ucfirst($permission->name)) }}<br>

@endforeach

Который, я считаю, просто проходит через permissions и если permission принадлежит текущему role поставьте галочку

Как я могу добиться этого без использования пакета?

Я в настоящее время пытался

@foreach ($permissions as $permission)

<div class="checkbox">
<label>
{{ ucfirst($permission->name) }}
</label>
<input type="checkbox" name="permissions[]" value="{{ $permission->id }}">
<br>
</div>

@endforeach

Но я не уверен, как прикрепить проверенный атрибут в зависимости от того, имеет ли роль разрешение в списке.

2

Решение

Просто добавьте checked приписать флажок HTML:

<input type="checkbox" name="permissions[]" value="{{ $permission->id }}" checked>

если вам нужно установить это условие, используйте следующий код:

<input type="checkbox" name="permissions[]" value="{{ $permission->id }}" @if(/* some condition */) checked @endif>

РЕДАКТИРОВАТЬ

Так как я не понял вопроса раньше, я добавлю некоторые детали.

Предполагая, что ваш Role Модель имеет коллекцию прикрепленных разрешений и хранится в атрибуте. $role->permissions ты мог бы сделать

<input type="checkbox" name="permissions[]" value="{{ $permission->id }}" @if($role->permissions->contains($permission)) checked @endif>

Таким образом, вы можете проверить, имеет ли ваша роль разрешение с идентификатором $permission->id,

6

Другие решения

Попробуй это:

@foreach ($permissions as $permission)

<div class="checkbox">
<label>
{{ ucfirst($permission->name) }}
</label>
<input type="checkbox" name="permissions[]" value="{{ $permission->id }} {{($role->permissions == $permission->id) ? 'checked' : ''}}">
<br>
</div>

@endforeach
2

По вопросам рекламы [email protected]