Using template engines ====================== By default Yii uses PHP as template language, but you can configure it to support other rendering engines, such as [Twig](http://twig.sensiolabs.org/) or [Smarty](http://www.smarty.net/). The component responsible for rendering a view is called `view`. You can add a custom template engines as follows: ```php array( 'components' => array( 'view' => array( 'class' => 'yii\base\View', 'renderers' => array( 'tpl' => array( 'class' => 'yii\renderers\SmartyViewRenderer', ), 'twig' => array( 'class' => 'yii\renderers\TwigViewRenderer', 'twigPath' => '@app/vendors/Twig', ), // ... ), ), ), ) ``` Note that Smarty and Twig are not bundled with Yii and you have to download and unpack these yourself and then specify `twigPath` and `smartyPath` respectively. Twig ---- In order to use Twig you need to put you templates in files with extension `.twig` (or another one if configured differently). Also you need to specify this extension explicitly when calling `$this->render()` or `$this->renderPartial()` from your controller: ```php echo $this->render('renderer.twig', array('username' => 'Alex')); ``` ### Additional functions Additionally to regular Twig syntax the following is available in Yii: ```php {{ post.title }} ``` path function calls `Html::url()` internally. ### Additional variables - `app` = `\Yii::$app` - `this` = current `View` object Smarty ------ In order to use Smarty you need to put you templates in files with extension `.tpl` (or another one if configured differently). Also you need to specify this extension explicitly when calling `$this->render()` or `$this->renderPartial()` from your controller: ```php echo $this->render('renderer.tpl', array('username' => 'Alex')); ``` ### Additional functions Additionally to regular Smarty syntax the following is available in Yii: ```php {$post.title} ``` path function calls `Html::url()` internally. ### Additional variables - `$app` = `\Yii::$app` - `$this` = current `View` object