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

синтаксическая ошибка, неожиданная ')' (представление: C: \ xampp \ htdocs \ drm \ resources \ views \ includes \ sidebar.blade.php) неожиданно "("

В

<li class="<?php echo e(preg_match("/project/i", url()->current()) ? 'active'); ?>">

Это не работает

<li class="{{ preg_match('/project/i', url()->current()) ? 'active' }}">

Это работает

<li class="@if(preg_match("/project/i", url()->current()))  {{'active'}} @endif">

Это тестовый пример, и preg_match("/project/i", url()->current() возвращает 1 или true

0
Aditya Thakur 6 Июн 2019 в 13:50

4 ответа

Лучший ответ

В PHP есть два вида операций if, которые мы можем написать:

  1. первый и известный - @if/@endif.

Example1 :

if( $valid ) {
    $x = 'yes';
} else {
    $x = 'no';
}
  1. вторая - это краткая форма, известная как тернарный оператор ($ valid) ? да: нет;

Это пример1, но с троичным оператором:

$x = $valid ? 'yes' : 'no';

Давайте вернемся к вашему первому варианту использования, который соответствует этому:

<li class="{{ preg_match('/project/i', url()->current()) ? 'active' }}">

В этом случае у вас возникла проблема с лексической структурой, потому что вы не уважали ternary operator, поэтому движок PHP не может разрешить то, что вы написали.

Для получения дополнительной информации о троичном операторе

1
Thamer 6 Июн 2019 в 12:32

Попробуйте что-то вроде этого, добавив двоеточие: он оценивает 'active', если значение preg_match ('/ project / i', url () -> current ()) равно true ''

<li class="{{ preg_match('/project/i', url()->current()) ? 'active':'' }}">

Я редактировал это. надеюсь это поможет

1
Julius Fasema 6 Июн 2019 в 11:04

Вам нужно использовать еще

<li class="{{ (preg_match('/project/i', url()->current())) ? 'active' : '' }}">
1
Maxim Abdalov 6 Июн 2019 в 10:56

Попробуйте добавить еще условие

<li class="{{ preg_match('/project/i', url()->current()) ? 'active' : '' }}">
2
skdroid 6 Июн 2019 в 10:54