Этот код использует Laravel 5.4v., Также корректирует spatie/laravel-permission.
Моя цель - включить условное выражение в флажок.
Как я могу определить, является ли пользователь «суперпользователем»? Если у пользователя нет разрешения «Супер», необходимо сделать невидимым флажок «Супер».
Код ниже не работал.
и еще один способ тоже приветствуется :)
<div class='form-group'>
@foreach ($roles as $role)
{{ Form::checkbox('roles[]', $role->id, $user->roles, array({!! $role == 'Super' ? "'style' => 'display:none'" : " "!!}) ) }}
{{ Form::label($role->name, ucfirst($role->name)) }}
<br>
@endforeach
</div>
[Решено]
Я сам нашел ответ, как показано ниже.
@role('Super')
<div class='form-group'>
@foreach ($roles as $role)
{{ Form::checkbox('roles[]', $role->id, $user->roles ) }}
{{ Form::label($role->name, ucfirst($role->name)) }}
<br>
@endforeach
</div>
@else
<div class='form-group'>
@foreach ($roles as $role)
@if ($role->name != 'Super')
{{ Form::checkbox('roles[]', $role->id, $user->roles ) }}
{{ Form::label($role->name, ucfirst($role->name)) }}
@endif
<br>
@endforeach
</div>
@endrole
подскажите поподробнее как настроить?






Попробуйте это, но в следующий раз дайте нам код, который работает (без условий), и код, который не работал.
<div class='form-group'>
@foreach ($roles as $role)
@if ( $role->name == 'super' )
@if ($user->hasRole('super'))
{{ Form::checkbox('roles[]', $role->id, $user->roles ) }}
{{ Form::label($role->name, ucfirst($role->name)) }}
<br>
@endif
@else
{{ Form::checkbox('roles[]', $role->id, $user->roles ) }}
{{ Form::label($role->name, ucfirst($role->name)) }}
@endif
@endforeach
</div>
нет, вам не нужен оператор else, if (condition) {show}
и спасибо за -1, я пытался помочь, и мой код правильный ^^
ваш код делает всех невидимыми, если пользователь не «Супер», пожалуйста, проверьте еще раз мой вопрос. Благодарю.
Выделение трех ошибок:
Сначала очистите синтаксическую ошибку, у вас не может быть усов внутри оператора лезвия:
{{ Form::checkbox('roles[]', $role->id, $user->roles, array($role == 'Super' ? "'style' => 'display:none'" : " ")) }}
$role == 'Super' всегда будет терпеть неудачу, потому что $role - это объект. Вам нужно вызвать соответствующий атрибут. Вместо этого воспользуемся $role->name.
Ваш массив беспорядочный. Если тест пройден, ваш массив будет выглядеть так: [0 => "'style' => 'display:none'"].
Что вы хотите сделать, так это использовать массив, только если тест пройден:
$role->name == 'Super' ? ['style' => 'display:none;'] : null
Итак, у нас есть:
{{ Form::checkbox('roles[]', $role->id, $user->roles, $role->name == 'Super' ? ['style' => 'display:none;'] : null) }}
ErrorExceptionCannot use a scalar value as an array; (
Извините, тернарный оператор исправлен.
возможно $ user-> hasRole ('Super') && $ role == 'Super'? 'отключен' : '' ?