Есть ли способ разместить переключатель в include? - PullRequest
0 голосов
/ 25 июня 2018

Я работаю над сборкой проекта PHP на платформе Laravel 5.4. Мне было интересно, есть ли способ поместить оператор switch в вызов include.

Я пытаюсь сделать что-то вроде этого:

@include('components/notification_message/_notification_message_html'
        , [ 'notificationType' => $notificationType
          , 'notificationMessage' => $notificationMessage
          , 'iconType' => switch($notificationType){case 'success': 'check'; break; case 'warning': 'warning'; break; default: 'exclamation';break;}])

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

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы не можете использовать оператор switch таким образом.Вместо этого вы можете использовать троичный оператор :

@include('components/notification_message/_notification_message_html', [
    'notificationType' => $notificationType,
    'notificationMessage' => $notificationMessage,
    'iconType' => $notificationType === 'success' ? 'check' : ($notificationType === 'warning' ? 'warning' : 'exclamation')
]);
0 голосов
/ 25 июня 2018

Нет способа разместить оператор switch внутри include. Вы можете сделать прямой переход с включением:

@switch($i)
    @case(1)
        @include('...');
        @break

    @case(2)
        @include('...');
        @break

    @default
        @include('...');
@endswitch

Или Вы можете использовать некоторую комбинацию директив @if и / или includeIf и includeWhen:

@includeIf('view.name', ['some' => 'data'])

@includeWhen($boolean, 'view.name', ['some' => 'data'])

https://laravel.com/docs/5.6/blade#including-sub-views

...