我刚开始用Yii2。
------------- 题1:加载错误的看法 -----------------我有一个站点模块与SiteController和它的视图。
actionIndex(){
$this->render('index');
}
显示错误:视图ROOT_PATH/views/site/index.php没有找到(注意:ROOT_PATH是我本地的目录)
在ROOT_PATH'modules'Site'Module.php文件中的init()函数中:我添加了语句来测试:echo $this->getViewPath();
结果:ROOT_PATH '网站' '模块视图
我想问:为什么它不加载index.php在/modules/Site/views文件夹?(它加载index.php在ROOT_PATH'views文件夹,所以它没有找到视图文件)
------------- 题2:负载操作错误 --------------
当我添加到ROOT_PATH'modules'Site'Module.php文件:Yii::$app->setLayoutPath($this->getLayoutPath());
现在它可以为actionIndex加载正确的视图。但是这个视图的链接不起作用:
$menuItems = [
['label' => 'About', 'url' => ['/site/about']]
]
Html在前端生成:
<a href="/site/about">About</a>
为什么href是'/site/about',我希望这个值是"site/site/about"
要调用" about "链接你必须在views/site中创建about.php并在sitcontroller
中创建一个名为actionAbout()的函数在sitecontrollerpublic function actionAboute()
{
$this->render('about');
}
在index . php <?= Html::a('About', ['value'=>Url::to('index.php?r=site/about')]) ?>
和加载视图问题检查你的配置文件和cookieValidationKey一次
所有模块在其模块路径中搜索视图模板。如果你有一个名为site的模块模块中有一个名为SiteController的控制器它会在文件夹
中搜索视图 ROOT_PATH'modules'site'views'site'
ROOT_PATH'modules'[modulename]'views'[controlername]
如果你在应用程序中直接在'controllers中设置控制器,则viewpath将是
ROOT_PATH'modules'views'site'
ROOT_PATH'modules'views'[controlername]
视图中以/开头的链接总是从根目录开始。在您的情况下,您只需要['about']
链接到相同的控制器(和相同的模块)。
如果你链接到另一个模块中的控制器,你也必须给出模块名称,在你的情况下也是site
。
['/site/site/about']
也将链接到您的站点模块中的站点控制器。但正如我上面提到的,如果你想链接到同一个模块中的同一个控制器,它是不需要的。
你可以在这里找到关于路由和URL创建的指南:
http://www.yiiframework.com/doc - 2.0/-指导-运行- routing.html