有一个结构:
modules/
-- office/
---- controllers/
-------- industryController.php
-------- industryAttrController.php
-------- userAdminController.php
-------- userAdminAttrController.php
---- modules/
-------- industry.php
-------- industryAttr.php
-------- userAdmin.php
-------- userAdminAttr.php
---- views/
-------- industry/
-------- industry-attr/
-------- userAdmin/
-------- userAdminAttr/
我想将其更改为:
modules/
-- office/
---- controllers/
-------- industry/
------------ industryController.php
------------ industryAttrController.php
-------- user-admin/
------------ userAdminController.php
------------ userAdminAttrController.php
---- modules/
-------- industry/
------------ industry.php
------------ industryAttr.php
-------- user-admin/
------------ userAdmin.php
------------ userAdminAttr.php
---- views/
-------- industry/
------------ industry/
------------ industry-attr/
-------- userAdmin/
------------ userAdmin/
------------ userAdminAttr/
我尝试在文件夹中移动控制器,我在OfficeModule.php中找到了这段代码:
namespace app\modules\office;
/**
* office module definition class
*/
class OfficeModule extends \yii\base\Module
{
/**
* @inheritdoc
*/
public $controllerNamespace = 'app\modules\office\controllers';
/**
* @inheritdoc
*/
public function init()
{
parent::init();
$this->layout = 'office';
}
}
但我可以在这里只为控制器设置一个文件夹。我可以添加其他路径还是不可能?
此外,我也希望在子文件夹中移动模型和视图。
我刚刚开始学习Yii2,所以请给我完整的答案。
谢谢。
答案 0 :(得分:0)
这里有某种“惯例”。如果你想在fronend / backend上分离你的逻辑,你应该让它们像不同的模块一样工作。你的结构看起来应该更像
backend
-assets
-config
-controllers
-models
-runtime
-views
-web
common
-config
-models
frontend
-assets
-config
-controllers
-models
-runtime
-views
-web
主要的是你应该有组件/控制器/模型等取决于模块而不是路径 - 所以它的路径/所有东西不是控制器/路径......
在那里你可以放置你想要的任何文件夹,只需正确配置名称空间。这样的项目是Yii高级模板:
https://github.com/yiisoft/yii2-app-advanced
看看它,你可能会理解这种分离背后的逻辑。如果您有更多问题,我会在评论中回答您。
答案 1 :(得分:0)
已读取错误日志并找到解决方案:
1) Have change namespaces (controllers)
2) After that I had error that can't find view files, so I have move view/industry/ -> view/industry/industry
3) Have move models to subfolder
4) Have change all `use` in all files
但现在我遇到路径问题:site.local / office / industry / industry / index
我想从路径中移除一个行业。我怎么能这样做?