刚刚安装了yii2框架并使用它,但我似乎无法将其与位于文件夹中的文件一起使用。
所有其他页面(索引,联系人,关于,索引等(都在views/site
文件夹中,但是我在称为blog
的views
文件夹中添加了一个新文件夹,该文件夹包含一个称为index.php
的新视图。
文件夹结构:
project
- views
-- site
--- index.php
--- about.php
--- (more files)
-- blog
--- index.php
class SiteController extends Controller
{
/**
* @inheritdoc
*/
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['logout'],
'rules' => [
[
'actions' => ['logout'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
/**
* @inheritdoc
*/
public function actions()
{
return [
'error' => [
'class' => 'yiiwebErrorAction',
],
'captcha' => [
'class' => 'yiicaptchaCaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
];
}
public function actionBlog()
{
// not working
return $this->render('blog/index');
}
}
使用路径简单地使用名称Blog
创建控制器,只需添加
return $this->render('/blog/index')
在SiteController
中的新操作actionBlog()
内部。
请记住,如果您不遵循Yii
使用controllers
和view
的约定,请在指定视图时使用尾随/
启动路径,如果您不添加尾随的斜线,它将尝试找到您指定的路径渲染方法 views/site
目录和添加尾斜线将从views
root Directory搜索。
yii2根据其名称匹配将视图目录设置为控制器。因此,您可以拥有一个名为BlogController的控制器,然后简单地呈现索引视图:
class BlogController extends Controller
{
...
public function actionBlog() // OR public function actionIndex()
{
// not working
return $this->render('index');
}
}
yii2视图路径与@saberi所述相对于控制器。看看文档
如果视图名称以单个斜杠/开头,则视图文件路径为 通过将视图名称与当前的视图路径前缀形成 活动模块。如果没有活动模块, @app/view/viewname将会 使用。例如,/用户/创建将解决 @app/模块/user/views/user/create.php,如果当前活动 模块是用户。如果没有活动模块,则视图文件路径将 BE @app/views/user/create.php。
所以最好的是创建一个blogcontroller,但是,如果您确实需要,可以通过$this->render('/blog/index')
从SiteController渲染(再次不推荐(来实现这一目标,甚至通过sitecontroller致电/重定向到Blog Controller,这也可能会变得凌乱,但可能。