我想在yii 2中为我的所有分支文件设置一个像main.htm这样的布局,但它首先加载控制器调用的文件夹,所以我不能用extends调用我的布局。
在SiteControllerpublic function actionIndex()
{
return $this->render('index.htm');
}
此代码调用views/site/index.htm
In my index.htm
{% extends "main.html" %}
所以如果我把main。html放在site文件夹中,没有问题,但是我想把它放在布局文件夹中,可以调用每个控制器视图。我怎么能做到呢?
views
->site
->index.html
->layouts
->main.html
例如在symfony中我们可以这样调用
{% extends '::base.html.twig' %}
但是在Yii2中我找不到这样做的方法....
我已经完成了硬编码文件viewRenderer.php。这不是我喜欢的方式,因为一个作曲家更新的变化消失了…
init函数是这样的加载器是空的。我已经为我的布局添加了加载器。
$this->twig = new 'Twig_Environment(null, array_merge([
'cache' => Yii::getAlias($this->cachePath),
'charset' => Yii::$app->charset,
], $this->options));
添加加载器后…
$this->loader = new 'Twig_Loader_Filesystem($_SERVER["DOCUMENT_ROOT"].''views'layouts');
最后是viewrenderer。php中的渲染函数
public function render($view, $file, $params)
{
$this->twig->addGlobal('this', $view);
//$this->twig->setLoader(new TwigSimpleFileLoader(dirname($file)));
$this->loader->addPath(dirname($file));
return $this->twig->render(pathinfo($file, PATHINFO_BASENAME), $params);
}
我希望它没有硬编码的变化在核心文件的yii2-twig ....
您是否尝试过在这里使用完整路径{% extends "main.html" %}
?比如{% extends "'layouts'main.html" %}
甚至{% extends "@app/views/layouts/main.html" %}
我没有在yii中使用过twig,但是值得一试。