Установите флажок в условном выражении в Laravel

Этот код использует Laravel 5.4v., Также корректирует spatie/laravel-permission.

Моя цель - включить условное выражение в флажок.

Установите флажок в условном выражении в Laravel

Как я могу определить, является ли пользователь «суперпользователем»? Если у пользователя нет разрешения «Супер», необходимо сделать невидимым флажок «Супер».

Код ниже не работал.

и еще один способ тоже приветствуется :)

<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

возможно $ user-> hasRole ('Super') && $ role == 'Super'? 'отключен' : '' ?

Calin Blaga 03.04.2018 11:54

подскажите поподробнее как настроить?

JsWizard 03.04.2018 12:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
622
2

Ответы 2

Попробуйте это, но в следующий раз дайте нам код, который работает (без условий), и код, который не работал.

<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}

Hassen Benabdelhafidh 03.04.2018 12:09

и спасибо за -1, я пытался помочь, и мой код правильный ^^

Hassen Benabdelhafidh 03.04.2018 12:16

ваш код делает всех невидимыми, если пользователь не «Супер», пожалуйста, проверьте еще раз мой вопрос. Благодарю.

JsWizard 03.04.2018 12:22

Выделение трех ошибок:

  • Сначала очистите синтаксическую ошибку, у вас не может быть усов внутри оператора лезвия:

    {{ 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; (
JsWizard 03.04.2018 12:32

Извините, тернарный оператор исправлен.

LevFlavien 03.04.2018 13:05

Другие вопросы по теме