Yii2里面布局Layout的缺省设置

techbrood 发表于 2019-07-20 15:34:53

标签: yii2, php, layout

- +

yii2里面渲染视图时,需要先查找layout,这个逻辑是在yii2/base/Controller/renderContent里面实现的:

public function renderContent($content)
    {
        $layoutFile = $this->findLayoutFile($this->getView());
        if ($layoutFile !== false) {
            return $this->getView()->renderFile($layoutFile, ['content' => $content], $this);
        }

        return $content;
    }

上面代码中的findLayoutFile会查找layout,其逻辑如下:

  1. 首先查找控制器的layout

  2. 没有的话,就查找其所属Module的layout(一直向上直到找到第一个),这里最后的Module就是应用程序(Application)对象,其默认layout的名称为"main",所以如果没有设置任何layout的情况下,程序默认将使用当前layouts目录下的main.php文件。

  3. 找到layout后会根据其名称来做一些路径上面的处理,比如可能是使用@的同名,可能绝对路径等。

所以如果我们想更改某个视图的layout,比如404页面,可以在对应Controller类中设置其成员变量$layout为"error"。


possitive(10) views3643 comments0

发送私信

最新评论

请先 登录 再评论.
相关文章