Тернарный оператор выдает ошибку, пока работает @if - PullRequest
0 голосов
/ 06 июня 2019

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

синтаксическая ошибка, неожиданная ')' (представление: 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

Ответы [ 4 ]

2 голосов
/ 06 июня 2019

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

<li class="{{ preg_match('/project/i', url()->current()) ? 'active' : '' }}">
1 голос
/ 06 июня 2019

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

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

example1:

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

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

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

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

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

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

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

1 голос
/ 06 июня 2019

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

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

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

1 голос
/ 06 июня 2019

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

<li class="{{ (preg_match('/project/i', url()->current())) ? 'active' : '' }}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...