Smarty view renderer для Yii
11 октября 2009
Ну и чтобы не обижать вполне живого старичка Smarty, написал рендерер для Yii и под него.
Инструкция:
Распаковываем его в protected/extensions.
Все файлы из libs складываем в protected/vendors/Smarty.
В секцию 'components' конфига добавляем:
'viewRenderer'=>array( 'class'=>'application.extensions.Smarty.CSmartyViewRenderer', 'fileExtension' => '.tpl', //'pluginsDir' => 'application.smartyPlugins', //'configDir' => 'application.smartyConfig', ),
Свойства текущего контроллера доступны как {this->pageTitle}.
Комментарии RSS по email OK
Старичек на днях будет праздновать цифру "3" в названии =)
btw:
http://www.yiiframework.com/extension/smarty-view-renderer/#doc
Помоему косяк детектед.
прям рендерер за рендерером :)
Mike TUMS
Не, комментарии там задуманы.
Sam
Так рендерер для Смарти, а комментарии для Квики.
Спасибо, поправил.
Было бы неплохо, небольшой рецептик как развернуть Smarty под Yii
Добавил.
А вот третий смарти (бета 7) таким образом не подцепишь.
Во-первых нужно включать autoregister в smarty:
// set autoload
define('SMARTY_SPL_AUTOLOAD', 1);
Во-вторых (не разбирался, но заметил): в третьей версии нет публичного свойства _tpl_vars за то есть _tpl_vars
Но там не просто массив:
array(3) { ["TIME"]=> object(Smarty_Variable)#17 (3) { ["value"]=> string(7) "0.04073" ["nocache"]=> bool(false) ["scope"]=> int(0) } ["MEMORY"]=> object(Smarty_Variable)#18 (3) { ["value"]=> string(7) "1.96 MB" ["nocache"]=> bool(false) ["scope"]=> int(0) }
Поэтому присвоить данные не получится, к тому же в этом случае потеряются вот эти данные:
$this->smarty->assign("TIME", sprintf('%0.5f', Yii::getLogger()->getExecutionTime()));
$this->smarty->assign("MEMORY", round(Yii::getLogger()->getMemoryUsage() / (1024 * 1024), 2) . " MB");
Upd: в третьей версии нет публичного свойства _tpl_vars за то есть tpl_vars
Вместо присвоения можно сделать так:
foreach ($data as $element => $value) {
}