Одни люди ищут - причины, другие - возможности, выигрывают последние

PHP: Тернарный оператор для Smarty

Начиная с третьей версии шаблонизатора Smarty (а именно, еще в далеком 2009 году) мы получили поддержку в шаблонах тернарного (ternary) оператора. Однако, описание этой полезной конструкции потерялась где то в недрах документации и многие из нас продолжают по старинке пользоваться монстром из нагромождения {if} ... {else} ... {/if}

Давайте упростим жизнь себе и окружающим и начнем пользоваться укороченной конструкцией тернарного оператора:


{(empty($inbox)) ? 'no emails' : 'you have got a letter' }

Здесь стоит обратить внимание на одну важную вещь, а именно: на различие в реализации тернарного оператора в Smarty по сравнению с реализацией в PHP.
Условие тернарного оператора должно быть обязательно заключено в круглые скобки.

Вот пример того, как с таким оператором можно легко присвоить результат сравнения какой-либо переменной:


{$privateState = {(isset($privateMode)) ? 'Yes' : 'No'}}

Или, еще один полезный пример, как сделать присвоение без фильтрации данных, используя модификатор nofilter (без него Smarty заэкранировал бы нам двойные кавычки):


{$hideElement = {($data.isHidden) ? 'class="hidden"' nofilter : ''}}

Надеюсь, не смотря на бородатость этой фичи, я помог кому-то из вас.

Ответить
Обязательные поля помечены *