да и документация эта уже устарела. она для 5-й версии, сейчас уже актуальна 7 версия
https://laravel.com/docs/7.x/blade
Dram
Я не пойму, почему <p>{{ $city or ‘Москва’ }}</p> выводит 1 ?
Если убрать or ‘Москва’ то выводит как и ожидалось значение сити.
Pr00f
Dram #: Я не пойму, почему <p>{{ $city or ‘Москва’ }}</p> выводит 1 ?
Если убрать or ‘Москва’ то выводит как и ожидалось значение сити.
выше уже ответили. при использовании OR вам возвращается результат проверки вашего условия (true, false) а не значения переменных. и если этот результат true/false перевести в строку, то получится 1 или 0
Как тогда понять эти данные из доков (пусть и к 5 версии), https://laravel.ru/docs/v5/blade#отображение-5
Вместо написания тернарного оператора Blade позволяет вам использовать такое удобное сокращение, которое будет скомпилировано в тернарный оператор, приведённый ранее:
{{ $name or 'Default' }}
Если переменная$name имеет значение, то оно будет отображено, иначе будет выведено словоDefault .
Pr00f
Dram #:
Как тогда понять эти данные из доков (пусть и к 5 версии), https://laravel.ru/docs/v5/blade#отображение-5
Вместо написания тернарного оператора Blade позволяет вам использовать такое удобное сокращение, которое будет скомпилировано в тернарный оператор, приведённый ранее:
Если переменная$name имеет значение, то оно будет отображено, иначе будет выведено словоDefault .
возможно, в версии 5.0-5.3 фреймворка так и работало. а в одной из следующих версии поменяли поведение, чтобы не путать разработчиков. начиная с версии 5.4 такого примера нет в документации, но появились @empty и @isset
рекомендую пользоваться актуальной документацией. фреймворк довольно часто обновляется и многие вещи в нем сильно меняются https://laravel.com/docs/7.x/blade
Dram
Изучаю Ларавел, дошел до темы — Вывод переменных после проверки на существование.
В контроллере
В шаблоне два варианта
В итоге получаю
1 СПб
Что за 1 ?
НО если в контроллере сделать переменную пустой
То на фронте останется только — 1.
Где я ошибаюсь? По идее ожидалось два раза вывод «СПб», а если пустая переменна — «Москва»
Dram
В итоге даже так, если в контроллере сделать переменную пустой, то и на фронте пустота
ГДе я ошибаюсь? Вроде делаю все как в доках https://laravel.ru/docs/v5/blade#отображение-5
Пока нужной логики добился только от варианта
livetv
Это приводит к булево.
Оффтоп.
Почему Вы решили изучать лару?
Pr00f
вам бы php сперва подучить
https://www.php.net/manual/ru/function.empty.php
https://www.php.net/manual/ru/function.isset.php
isset проверяет существует ли переменная и ее значение не null. empty проверяет пустое ли значение у переменной. к пустым относятся:
«» (пустая строка)
0 (целое число)
0.0 (число с плавающей точкой)
«0» (строка)
NULL
FALSE
array() (пустой массив)
можно решить и вот так:
да и документация эта уже устарела. она для 5-й версии, сейчас уже актуальна 7 версия
https://laravel.com/docs/7.x/blade
Dram
Pr00f
Я не пойму, почему <p>{{ $city or ‘Москва’ }}</p> выводит 1 ?
выше уже ответили. при использовании OR вам возвращается результат проверки вашего условия (true, false) а не значения переменных. и если этот результат true/false перевести в строку, то получится 1 или 0
https://www.php.net/manual/ru/language.operators.logical.php
Dram
Как тогда понять эти данные из доков (пусть и к 5 версии), https://laravel.ru/docs/v5/blade#отображение-5
Вместо написания тернарного оператора Blade позволяет вам использовать такое удобное сокращение, которое будет скомпилировано в тернарный оператор, приведённый ранее:
{{ $name or 'Default' }}
Если переменная $name имеет значение, то оно будет отображено, иначе будет выведено слово Default .
Pr00f
Как тогда понять эти данные из доков (пусть и к 5 версии), https://laravel.ru/docs/v5/blade#отображение-5
Вместо написания тернарного оператора Blade позволяет вам использовать такое удобное сокращение, которое будет скомпилировано в тернарный оператор, приведённый ранее:
Если переменная $name имеет значение, то оно будет отображено, иначе будет выведено слово Default .
возможно, в версии 5.0-5.3 фреймворка так и работало. а в одной из следующих версии поменяли поведение, чтобы не путать разработчиков. начиная с версии 5.4 такого примера нет в документации, но появились @empty и @isset
рекомендую пользоваться актуальной документацией. фреймворк довольно часто обновляется и многие вещи в нем сильно меняются https://laravel.com/docs/7.x/blade