Jak odczytać wartość domyślną, jeśli wartość nie jest ustawiona
Chciałbym wiedzieć, jaki byłby najlepszy sposób wyświetlania wartości domyślnej, jeśli podana wartość nie jest ustawiona. Mam następujące w pliku blade (Nie mogę zagwarantować, że klucz jest ustawiony, zależy to od wielu czynników).
{{ $foo['bar'] }}
Wiedziałbym, czy Poniżej jest najlepszym sposobem, aby to zrobić,
{{ (isset($foo['bar']) ? $foo['bar'] : 'baz' }}
Czy jest na to lepszy sposób?
Dzięki:)
5 answers
Z Laravel 4.1+ możesz po prostu zrobić to tak:
{{ $Variable or "Default Message" }}
To dokładnie to samo co:
echo isset($Variable) ? $Variable : 'Default Message';
Edit: na marginesie, powyżej jest obsługiwane w PHP 7+, używając ??
echo $Variable ?? 'Default Message';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-10 17:36:09
Składnia trójwymiarowego skrótu PHP 5.3 działa w szablonach Blade:
{{ $foo->bar ?: 'baz' }}
Nie będzie działać z niezdefiniowanymi zmiennymi najwyższego poziomu, ale świetnie nadaje się do obsługi brakujących wartości w tablicach i obiektach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-18 04:30:05
Zalecam ustawienie domyślnej wartości w kontrolerze zamiast robienia obejścia w widoku.
Jest to najlepszy sposób, ponieważ utrzymuje logikę z dala od widoku i utrzymuje znaczniki widoku w czystości.
Na przykład w kontrolerze, przed przekazaniem danych do widoku:
if(!isset($foo['bar'])){
$foo['bar'] = 'baz';
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-02 18:32:21
Od Laravel 5.7 {{$Variable or "Default Message"}}
rzuca $Variable is not defined
. To działa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-12 09:53:45
Podczas gdy odpowiedź Chrisa B jest całkowicie poprawna; czułem, że być może jest to pytanie, które może mieć alternatywną odpowiedź. Niektórzy woleliby, aby ich Kontrolery nie były "grube" i w tym przypadku przynajmniej użycie prezentera może być odpowiedzią, której szukasz, aby umożliwić dużą elastyczność w widokach aplikacji.
Spójrz na następujący projekt / pakiet na Githubie. Readme jest dość solidny z wieloma przykładami, które pomogą Ci zacząć.
It pozwoli Ci zrobić to, o co prosiłeś i po prostu zadzwonić
{{ $foo['bar'] }}
Twoim zdaniem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-03 17:36:37