Или оператор не работает, как ожидалось, Laravel 5.7 - PullRequest
0 голосов
/ 29 декабря 2018

Это кажется очень простым , но , как упомянуто в этой ссылке или что-то вроде этого: https://laravel -news.com / blade-or-operator Я ожидаю, что:

{{ $title or 'login' }}

должны быть скомпилированы следующим образом:

if( isset($title) )
{
    echo $title;
}
else {
    echo 'login';
}

или вкратце это эквивалентно этому:

isset($title) ? $title : 'login'

Хорошо, но когда я использую это, laravel отправляет мнепоявляется сообщение об ошибке:

ErrorException (E_ERROR) Неопределенная переменная: title (представление: C: \ xampp \ htdocs \ site \ resources \ views \ layouts \ auth.blade.php) (представление: C:\ xampp \ htdocs \ site \ resources \ views \ layouts \ auth.blade.php) Предыдущие исключения

Undefined variable: title (View: C:\xampp\htdocs\site\resources\views\layouts\auth.blade.php) (0)
Undefined variable: title (0)

, что означает, что с этим что-то не так.

Знаете ли вычто может быть не так в моем коде или конфигурации?

Заранее спасибо

Ответы [ 4 ]

0 голосов
/ 23 марта 2019

Если вы получаете такую ​​ошибку, то ваша переменная $title, скорее всего, не определена, поэтому дважды проверьте ваш код.Относительно примечания: блейд-система Laravel, похоже, не компилирует этот оператор or в то, что вы ожидаете больше.Проверьте файл кэшированного представления, и вы, скорее всего, увидите что-то вроде

<?php echo e($title or 'login'); ?>

вместо

<?php echo e(isset($title ) ? $title : 'login'); ?>

.получить с более старыми версиями Laravel, что приводит к ошибочному результату (первая возвращает логическое значение. Вторая возвращает либо значение $ title, либо строку 'login', как вы и ожидали).Вот почему рекомендуется использовать оператор null coalesce (??) сейчас при использовании Laravel версий 5.7 и выше.

0 голосов
/ 29 декабря 2018

лучше использовать ??(null coalescing operator) in php 7

{{ $title ?? 'login' }}

Используется для замены троичной операции в сочетании с isset ()функция.Оператор объединения Null возвращает свой первый операнд, если он существует и не равен NULL;в противном случае возвращается второй операнд.

0 голосов
/ 29 декабря 2018

Оператор or

Оператор Blade "или" удален в пользу встроенного в PHP оператора ?? "null coalesce", который имеет те же цели и функции:

// Laravel 5.6...
{{ $foo or 'default' }}

// Laravel 5.7...
{{ $foo ?? 'default' }}

Вы можете использовать как: {{ $title ?? 'login' }}

0 голосов
/ 29 декабря 2018

Что говорит новый laravel:

В следующем основном выпуске Laravel 5.7 удаляет Blade «или» Operator.Эндрю Браун представил PR для Laravel 5.7, чтобы удалить Blade Defaults из фреймворка, благодаря новому оператору Null Coalesce, доступному в PHP 7.

Пожалуйста, посмотрите сразу.https://laravel -news.com / blade-templates-null-coalesce-operator

Вы можете использовать.

{{ $title ?? 'login' }}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...