Данное расширение позволяет использовать Twig как шаблонизатор.
###Полезные ссылки
###Требования
- Yii 1.0 и выше
###Установка ####Установка вручную
- Распаковать в
vendor/Twig
. - Скачать и распаковать все файлы
Twig из
fabpot-Twig-______.zip\fabpot-Twig-______\lib\Twig\
вprotected/vendor/Twig
. - Добавить следующее в файл конфигурации в секцию 'components':
<?php
'viewRenderer' => array(
'class' => 'ext.ETwigViewRenderer',
// Все параметры ниже являются необязательными
'fileExtension' => '.twig',
'options' => array(
'autoescape' => true,
),
'extensions' => array(
'My_Twig_Extension',
),
'globals' => array(
'html' => 'CHtml'
),
'functions' => array(
'rot13' => 'str_rot13',
),
'filters' => array(
'jencode' => 'CJSON::encode',
),
// Пример изменения синтаксиса на Smarty-подобный (не рекомендуется использовать)
'lexerOptions' => array(
'tag_comment' => array('{*', '*}'),
'tag_block' => array('{', '}'),
'tag_variable' => array('{$', '}')
),
),
####Установка через Composer
- Установить Composer.
- Создать файл protected/composer.json, если он отсутствует:
{
"repositories":[
{
"type":"package",
"package":{
"name":"yiiext/twig-renderer",
"version":"1.1.15",
"source":{
"type":"git",
"url":"https://github.com/yiiext/twig-renderer",
"reference":"v1.1.15"
}
}
}
],
"require":{
"php":">=5.3.0",
"yiisoft/yii": "dev-master",
"twig/twig": "1.*",
"yiiext/twig-renderer":"1.1.*"
}
}
- Выполнить команду
composer update
. - Добавить следующее в файл конфигурации в секцию 'components':
<?php
'viewRenderer' => array(
'class' => 'application.vendor.yiiext.twig-renderer.ETwigViewRenderer',
'twigPathAlias' => 'application.vendor.twig.twig.lib.Twig',
// Все параметры ниже являются необязательными
'fileExtension' => '.twig',
'options' => array(
'autoescape' => true,
),
'extensions' => array(
'My_Twig_Extension',
),
'globals' => array(
'html' => 'CHtml'
),
'functions' => array(
'rot13' => 'str_rot13',
),
'filters' => array(
'jencode' => 'CJSON::encode',
),
// Пример изменения синтаксиса на Smarty-подобный (не рекомендуется использовать)
'lexerOptions' => array(
'tag_comment' => array('{*', '*}'),
'tag_block' => array('{', '}'),
'tag_variable' => array('{$', '}')
),
),
###Использование
- См. синтаксис Twig.
- Свойства текущего контроллера доступны как {{this.pageTitle}}.
- Объект приложения Yii::app() доступен как {{App}}.
- Базовые статические классы Yii (например, CHtml) доступны как {{C.ClassNameWithoutFirstC.Method}} (пример: {{C.Html.textField(name,'value')}})
- Для вызова функций или методов, которые возвращают не строку (а объект, например) используйте функцию-обертку 'void': {{void(App.clientScript.registerScriptFile(...))}}
###Пример использования виджета
<div id="mainmenu">
{{ this.widget('zii.widgets.CMenu',{
'items':[
{'label':'Home', 'url':['/site/index']},
{'label':'About', 'url':{0:'/site/page', 'view':'about'} },
{'label':'Contact', 'url':['/site/contact']},
{'label':'Login', 'url':['/site/login'], 'visible':App.user.isGuest},
{'label':'Logout ('~App.user.name~')', 'url':['/site/logout'], 'visible':not App.user.isGuest}
]
}, true) }}
</div><!-- mainmenu -->