Class yii\twig\ViewRenderer
Inheritance | yii\twig\ViewRenderer » yii\base\ViewRenderer |
---|---|
Available since extension's version | 2.0 |
Source Code | https://github.com/yiisoft/yii2-twig/blob/master/ViewRenderer.php |
TwigViewRenderer allows you to use Twig templates in views.
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
$cachePath | string | The directory or path alias pointing to where Twig cache will be stored. | yii\twig\ViewRenderer |
$extensions | array | Custom extensions. | yii\twig\ViewRenderer |
$filters | array | Custom filters. | yii\twig\ViewRenderer |
$functions | array | Custom functions. | yii\twig\ViewRenderer |
$globals | array | Global variables. | yii\twig\ViewRenderer |
$lexerOptions | array | Twig lexer options. | yii\twig\ViewRenderer |
$options | array | Twig options. | yii\twig\ViewRenderer |
$twig | \Twig_Environment | Twig environment object that renders twig templates | yii\twig\ViewRenderer |
$twigFallbackPaths | array | Twig fallback paths | yii\twig\ViewRenderer |
$twigModulesNamespace | string | Twig namespace to use in modules templates | yii\twig\ViewRenderer |
$twigViewsNamespace | string | Twig namespace to use in templates | yii\twig\ViewRenderer |
$twigWidgetsNamespace | string | Twig namespace to use in widgets templates | yii\twig\ViewRenderer |
$uses | array | Namespaces and classes to import. | yii\twig\ViewRenderer |
Public Methods
Method | Description | Defined By |
---|---|---|
addExtensions() | Adds custom extensions | yii\twig\ViewRenderer |
addFilters() | Adds custom filters | yii\twig\ViewRenderer |
addFunctions() | Adds custom functions | yii\twig\ViewRenderer |
addGlobals() | Adds global objects or static classes | yii\twig\ViewRenderer |
init() | yii\twig\ViewRenderer | |
render() | Renders a view file. | yii\twig\ViewRenderer |
setLexerOptions() | Sets Twig lexer options to change templates syntax | yii\twig\ViewRenderer |
Protected Methods
Method | Description | Defined By |
---|---|---|
addAliases() | Adds aliases | yii\twig\ViewRenderer |
addFallbackPaths() | Adds fallback paths to twig loader | yii\twig\ViewRenderer |
Property Details
The directory or path alias pointing to where Twig cache will be stored. Set to false to disable templates cache.
Custom extensions.
Example: ['Twig_Extension_Sandbox', new \Twig_Extension_Text()]
Custom filters.
Keys of the array are names to call in template, values are names of functions or static methods of some class.
Example: ['rot13' => 'str_rot13', 'jsonEncode' => '\yii\helpers\Json::encode']
.
In the template you can use it like this: {{ 'test'|rot13 }}
or {{ model|jsonEncode }}
.
Custom functions.
Keys of the array are names to call in template, values are names of functions or static methods of some class.
Example: ['rot13' => 'str_rot13', 'a' => '\yii\helpers\Html::a']
.
In the template you can use it like this: {{ rot13('test') }}
or {{ a('Login', 'site/login') | raw }}
.
Global variables.
Keys of the array are names to call in template, values are scalar or objects or names of static classes.
Example: ['html' => ['class' => '\yii\helpers\Html'], 'debug' => YII_DEBUG]
.
In the template you can use it like this: {{ html.a('Login', 'site/login') | raw }}
.
Twig lexer options.
Example: Smarty-like syntax:
`
php
[
'tag_comment' => ['{*', '*}'],
'tag_block' => ['{', '}'],
'tag_variable' => ['{$', '}']
]
`
See also http://twig.sensiolabs.org/doc/recipes.html#customizing-the-syntax.
Twig options.
See also http://twig.sensiolabs.org/doc/api.html#environment-options.
Twig environment object that renders twig templates
Twig fallback paths
Twig namespace to use in modules templates
Twig namespace to use in templates
Twig namespace to use in widgets templates
Method Details
Adds aliases
protected void addAliases ( $loader, $aliases ) | ||
$loader | \Twig_Loader_Filesystem | |
$aliases | array |
protected function addAliases($loader, $aliases)
{
foreach ($aliases as $alias => $path) {
if (is_array($path)) {
$this->addAliases($loader, $path);
} elseif (is_string($path) && is_dir($path)) {
$loader->addPath($path, substr($alias, 1));
}
}
}
Adds custom extensions
public void addExtensions ( $extensions ) | ||
$extensions | array |
@see self::$extensions |
public function addExtensions($extensions)
{
foreach ($extensions as $extName) {
$this->twig->addExtension(is_object($extName) ? $extName : Yii::createObject($extName));
}
}
Adds fallback paths to twig loader
protected void addFallbackPaths ( $loader, $theme ) | ||
$loader | \Twig_Loader_Filesystem | |
$theme | \yii\base\Theme|null |
protected function addFallbackPaths($loader, $theme)
{
foreach ($this->twigFallbackPaths as $namespace => $path) {
$path = Yii::getAlias($path);
if (!is_dir($path)) {
continue;
}
if (is_string($namespace)) {
$loader->addPath($path, $namespace);
} else {
$loader->addPath($path);
}
}
if ($theme instanceOf \yii\base\Theme && is_array($theme->pathMap)) {
$pathMap = $theme->pathMap;
if (isset($pathMap['@app/views'])) {
foreach ((array)$pathMap['@app/views'] as $path) {
$path = Yii::getAlias($path);
if (is_dir($path)) {
$loader->addPath($path, $this->twigViewsNamespace);
}
}
}
if (isset($pathMap['@app/modules'])) {
foreach ((array)$pathMap['@app/modules'] as $path) {
$path = Yii::getAlias($path);
if (is_dir($path)) {
$loader->addPath($path, $this->twigModulesNamespace);
}
}
}
if (isset($pathMap['@app/widgets'])) {
foreach ((array)$pathMap['@app/widgets'] as $path) {
$path = Yii::getAlias($path);
if (is_dir($path)) {
$loader->addPath($path, $this->twigWidgetsNamespace);
}
}
}
}
$defaultViewsPath = Yii::getAlias('@app/views');
if (is_dir($defaultViewsPath)) {
$loader->addPath($defaultViewsPath, $this->twigViewsNamespace);
}
$defaultModulesPath = Yii::getAlias('@app/modules');
if (is_dir($defaultModulesPath)) {
$loader->addPath($defaultModulesPath, $this->twigModulesNamespace);
}
$defaultWidgetsPath = Yii::getAlias('@app/widgets');
if (is_dir($defaultWidgetsPath)) {
$loader->addPath($defaultWidgetsPath, $this->twigWidgetsNamespace);
}
}
Adds custom filters
public void addFilters ( $filters ) | ||
$filters | array |
@see self::$filters |
public function addFilters($filters)
{
$this->_addCustom('Filter', $filters);
}
Adds custom functions
public void addFunctions ( $functions ) | ||
$functions | array |
@see self::$functions |
public function addFunctions($functions)
{
$this->_addCustom('Function', $functions);
}
Adds global objects or static classes
public void addGlobals ( $globals ) | ||
$globals | array |
@see self::$globals |
public function addGlobals($globals)
{
foreach ($globals as $name => $value) {
if (is_array($value) && isset($value['class'])) {
$value = new ViewRendererStaticClassProxy($value['class']);
}
$this->twig->addGlobal($name, $value);
}
}
public void init ( ) |
public function init()
{
$this->twig = new \Twig_Environment(null, array_merge([
'cache' => Yii::getAlias($this->cachePath),
'charset' => Yii::$app->charset,
], $this->options));
$this->twig->setBaseTemplateClass('yii\twig\Template');
// Adding custom globals (objects or static classes)
if (!empty($this->globals)) {
$this->addGlobals($this->globals);
}
// Adding custom functions
if (!empty($this->functions)) {
$this->addFunctions($this->functions);
}
// Adding custom filters
if (!empty($this->filters)) {
$this->addFilters($this->filters);
}
$this->addExtensions([new Extension($this->uses)]);
// Adding custom extensions
if (!empty($this->extensions)) {
$this->addExtensions($this->extensions);
}
$this->twig->addGlobal('app', \Yii::$app);
// Change lexer syntax (must be set after other settings)
if (!empty($this->lexerOptions)) {
$this->setLexerOptions($this->lexerOptions);
}
}
Renders a view file.
This method is invoked by View whenever it tries to render a view. Child classes must implement this method to render the given view file.
public string render ( $view, $file, $params ) | ||
$view | \yii\base\View |
The view object used for rendering the file. |
$file | string |
The view file. |
$params | array |
The parameters to be passed to the view file. |
return | string |
The rendering result |
---|
public function render($view, $file, $params)
{
$this->twig->addGlobal('this', $view);
$loader = new \Twig_Loader_Filesystem(dirname($file));
if ($view instanceof View) {
$this->addFallbackPaths($loader, $view->theme);
}
$this->addAliases($loader, Yii::$aliases);
$this->twig->setLoader($loader);
return $this->twig->render(pathinfo($file, PATHINFO_BASENAME), $params);
}
Sets Twig lexer options to change templates syntax
public void setLexerOptions ( $options ) | ||
$options | array |
@see self::$lexerOptions |
public function setLexerOptions($options)
{
$lexer = new \Twig_Lexer($this->twig, $options);
$this->twig->setLexer($lexer);
}