如何在子文件夹中呈现视图

时间:2018-02-19 16:05:48

标签: php yii2

刚刚安装了yii2框架并使用它,但我似乎无法使用它来处理位于文件夹内的文件。

所有其他页面(索引,联系人,关于,索引等)都在views/site文件夹中,但我在名为views的{​​{1}}文件夹中添加了一个新文件夹,其中包含一个新文件夹视图称为blog

文件夹结构:

index.php

3 个答案:

答案 0 :(得分:0)

Yii2根据名称匹配将视图目录设置为控制器。因此,您可以拥有一个名为BlogController的控制器,然后只需渲染索引视图:

class BlogController extends Controller
{
    ...

    public function actionBlog() // OR public function actionIndex()
    {
        // not working
        return $this->render('index');
    }

}

答案 1 :(得分:0)

Yii2视图路径与@Saberi提到的控制器相关。看看docs

  

如果视图名称以单斜杠/开头,则视图文件路径为   通过在视图名称前加上当前视图路径的前缀来形成   活动模块。如果没有活动模块,@ app / views / ViewName将会   使用。例如,/ user / create将被解析为   @ app / modules / user / views / user / create.php,如果当前有效   模块是用户。如果没有活动模块,则视图文件路径会   是@ app / views / user / create.php。

所以最好的方法是创建一个BlogController,但是如果你真的需要,你可以通过$this->render('/blog/index')从SiteController渲染 - 再次,不是真的推荐 - 甚至通过调用/重定向来实现这一点从SiteController到BlogController,它也可能变得混乱,但可能。

答案 2 :(得分:0)

使用该路径根本没有用,专门创建名为Blog的控制器,只需添加

return $this->render('/blog/index')

actionBlog()。{/ p>中的新操作SiteController

请记住,如果您没有遵循使用Yiicontrollers的{​​{1}}惯例,请在指定视图时启动带有view尾随的路径,如果您不要添加尾部斜杠,它会尝试找到你在render方法中指定的路径 /目录并添加尾部斜杠将从views/site根目录进行搜索。