Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Если Вы реализовываете логику на смарти это не значит, что смарти плох.Так я же написал
но стороннему разработчику довольно сложно в эту мешанину вникнуть сходу.
<?=isset($item['key']) ? $item['key'] : 'default'?>
<?=$item ?: 'default'?>
А почему не так?
<?=isset($item['key']) ? $item['key'] : 'default'?>
А если говорить не о наличии индекса в массиве, а о ненулевом значении, то ещё проще (PHP 5.3)
<?=$item ?: 'default'?>
Запись без шаблона — <? if (isset($item['key']):?> <?= $item['key'] ?> <? else: ?> default <?endif ?>
тоже самое в смарти — {$item.key | default:'default'}
$var ?: 'default' бесполезна практически :(echo '<option ...>'.$node['name'].'</option>';echo '<option ...>', $node['name'], '</option>';$start = microtime(1);
ob_start();
for($i=0; $i<1000000; $i++) echo 'a' , $start , 'b';
ob_end_clean();
die(microtime(1) - $start);
echo 'some' . 'string' на присваивание значения переменной $var .= 'some' . 'string'. Как вы понимаете мне достаточно было заменить «echo» на "$var .=", не выискивая запятые, т.к. она не является оператором конкатенации.{$var|escape 'html'|upper} против <?= htmlspecialchars(strtoupper($var));?> или даже <?php echo htmlspecialchars(strtoupper($var));?>
{$var = $a + $b;} против <?php $var = $a + $b; ?>
<table>
<tr><th>{'Header' | i18n | escape 'htmlall'}</th><th>{'Name' | i18n | escape 'htmlall'}</th></tr>
{foreach $table as $row}
<tr><td>{$row.header | escape 'htmlall'}</td><td>{$row.name | escape 'htmlall'}</td></tr>
{/foreach}
</table>
<table>
<tr><th><?= CHtml::encode(Yii::t('', Header' )); ?></th><th><?= CHtml::encode(Yii::t('', 'Name')); ?></th></tr>
<?php foreach($table as $row) { ?>
<tr><td><?= CHtml::encode($row['header']); ?></td><td><?= CHtml::encode($row['name']); ?></td></tr>
<?php } ?>
</table>
Проще? Нет.
Понятнее? Нет.
Быстрее? Возможно.
Безопаснее? Нет.
Что автор хочет донести до нас?
{{ user.status }}
<?= ucfirst(e($user->getStatus())); ?>
{{ user.status | e | capitalize }}
Внутри шаблона не должно быть условий, ветвлений и преобразования типов
Чтобы вывести несколько строк внутри таблицы, секция с шаблоном строки задается один раз
раскрасить в разные цвета можно через переменную (надеюсь сообразите сами как, теги не работают, чтоб пример написать),
за то, сколько раз строку рисовать, отвечает логика, а не шаблон...
Почему я отказался от использования Smarty