<rmcreative>

RSS

Smarty view renderer для Yii

11 октября 2009

Ну и чтобы не обижать вполне живого старичка Smarty, написал рендерер для Yii и под него.

Пользуемся

Инструкция:

'viewRenderer'=>array(
  'class'=>'application.extensions.Smarty.CSmartyViewRenderer',
  'fileExtension' => '.tpl',
  //'pluginsDir' => 'application.smartyPlugins',
  //'configDir' => 'application.smartyConfig',
),

Свойства текущего контроллера доступны как {this->pageTitle}.

Комментарии RSS

  1. №1913
    Mike TUMS
    Mike TUMS 11.10.2009, 22:54:12

    Старичек на днях будет праздновать цифру "3" в названии =)

  2. №1914
    Mike TUMS
    Mike TUMS 11.10.2009, 22:56:10

    btw:

    http://www.yiiframework.com/extension/smarty-view-renderer/#doc

    Помоему косяк детектед.

    //'pluginsDir' => 'application.quickyPlugins',
        //'configDir' => 'application.quickyConfig',
  3. №1915
    plandem
    plandem 12.10.2009, 10:58:04

    прям рендерер за рендерером :)

  4. №1916
    Sam
    Sam 12.10.2009, 13:05:55

    Mike TUMS

    Не, комментарии там задуманы.

  5. №1917
    Максим
    Максим 12.10.2009, 18:58:15

    Sam

    Так рендерер для Смарти, а комментарии для Квики.

  6. №1918
    Sam
    Sam 12.10.2009, 21:35:31

    Спасибо, поправил.

  7. №1919
    olegre
    olegre 13.10.2009, 0:18:39

    Было бы неплохо, небольшой рецептик как развернуть Smarty под Yii

  8. №1923
    Sam
    Sam 13.10.2009, 14:03:24

    Добавил.

  9. №2195
    Stepan
    Stepan 26.01.2010, 5:34:10

    А вот третий смарти (бета 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");

  10. №2196
    Stepan
    Stepan 26.01.2010, 5:34:59

    Upd: в третьей версии нет публичного свойства _tpl_vars за то есть tpl_vars

  11. №2197
    Stepan
    Stepan 26.01.2010, 5:38:25

    Вместо присвоения можно сделать так:

    foreach ($data as $element => $value) {

    $this->smarty->assign($element, $value);
    
    

    }

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.