Yii2 ::将控制器,模型和视图移动到子文件夹

时间:2016-08-12 08:27:33

标签: php yii2 structure

有一个结构:

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

谢谢。

2 个答案:

答案 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

我想从路径中移除一个行业。我怎么能这样做?