Как эхо значение по умолчанию, если значение не задано кликом
Я хотел бы знать, что будет лучшим способом отображения значения по умолчанию, если заданное значение не установлено. У меня есть следующее в файле клинка (я не могу гарантировать, что ключ установлен, это зависит от множества факторов).
{{ $foo['bar'] }}
Я бы знал, что лучший способ сделать это,
{{ (isset($foo['bar']) ? $foo['bar'] : 'baz' }}
или есть лучший способ сделать это?
Спасибо:)
Ответы
Ответ 1
С Laravel 4.1+ вы можете просто сделать это следующим образом:
{{ $Variable or "Default Message" }}
Это то же самое, что и:
echo isset($Variable) ? $Variable : 'Default Message';
Изменить: на боковой ноте выше поддерживается в PHP 7+, используя
echo $Variable ?? 'Default Message';
Ответ 2
PHP 5.3 тройной синтаксис ярлыков работает в шаблонах Blade:
{{ $foo->bar ?: 'baz' }}
Он не будет работать с переменными верхнего уровня undefined, но он отлично подходит для обработки отсутствующих значений в массивах и объектах.
Ответ 3
Я рекомендую установить значение по умолчанию в вашем контроллере, вместо того, чтобы делать обход в вашем представлении.
Это лучший способ, поскольку он сохраняет логику из вашего представления и сохраняет разметку представления чистой.
Например, в вашем контроллере перед передачей данных в представление:
if(!isset($foo['bar'])){
$foo['bar'] = 'baz';
}
Ответ 4
В то время как ответ Криса Б совершенно справедлив; Я чувствовал, возможно, это вопрос, который может иметь альтернативный ответ. Некоторые предпочли бы не делать их контроллеры "жирными", и в этом случае, по крайней мере, использование Presenter может быть ответом, который вы ищете для обеспечения большой гибкости в представлениях вашего приложения.
Взгляните на следующий проект/пакет на Github. Readme довольно надежный, с несколькими примерами, чтобы вы начали.
Это позволит вам делать то, что вы просили, и просто вызвать
{{ $foo['bar'] }}
в вашем представлении.