将控制器、模型和视图移动到子文件夹中


Yii2 :: Move controllers, models and views to subfolders

有一个结构:

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,所以请给我完整的答案。

谢谢。

这里有某种"约定"。如果你想在前端/后端分离你的逻辑,你应该让它们像不同的模块一样工作。你的结构应该看起来更像

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) 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

我想从path中删除一个行业。我该怎么做呢?