Yii2 模块 自定义模块目录

WBOY
Lepaskan: 2016-06-06 20:08:15
asal
1141 orang telah melayarinya

请教一下各位,yii2的模块创建后(比如如下的forum模块),官方的标准是如下目录结构。
请问可以在该模块下手动创建一个目录么?比如common目录,如果可以的话调用该目录里的类文件与Yii1.1中的components一样么?
现在想把该模块通用的类放到该目录,就像YII1.1中的components目录一样,多谢了

<code>forum/
    Module.php                   模块类文件
    controllers/                 包含控制器类文件
        DefaultController.php    default 控制器类文件
    models/                      包含模型类文件
    views/                       包含控制器视图文件和布局文件
        layouts/                 包含布局文件
        default/                 包含DefaultController控制器视图文件
            index.php            index视图文件</code>
Salin selepas log masuk
Salin selepas log masuk

回复内容:

请教一下各位,yii2的模块创建后(比如如下的forum模块),官方的标准是如下目录结构。
请问可以在该模块下手动创建一个目录么?比如common目录,如果可以的话调用该目录里的类文件与Yii1.1中的components一样么?
现在想把该模块通用的类放到该目录,就像YII1.1中的components目录一样,多谢了

<code>forum/
    Module.php                   模块类文件
    controllers/                 包含控制器类文件
        DefaultController.php    default 控制器类文件
    models/                      包含模型类文件
    views/                       包含控制器视图文件和布局文件
        layouts/                 包含布局文件
        default/                 包含DefaultController控制器视图文件
            index.php            index视图文件</code>
Salin selepas log masuk
Salin selepas log masuk

没什么经验,不过从你列出的默认结构来看直接创建目录应该是无法自动加载的,需要添加一些设置,类似 namespace => 'Common', path => 'forum/common',具体怎么做参考一下models或者controllers的配置就行了。

这种相当于加组件类,主要是把自己添加的类路径和参数, 在config目录中的main.php进行配置,这样的就可以自动加载,可以仿照db配置connection时的样子 :
(主要应该是自定义class的路径 例如可以是forumcommonutil。对应util类的命名空间可以是namespace forumcommon)

<code>[
    'components' => [
        // 使用类名注册 "cache" 组件
        'cache' => 'yii\caching\ApcCache',

        // 使用配置数组注册 "db" 组件
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=demo',
            'username' => 'root',
            'password' => '',
        ],

        // 使用函数注册"search" 组件
        'search' => function () {
            return new app\components\SolrService;
        },
    ],
]</code>
Salin selepas log masuk

多谢各位。
发现可以通过命名空间解决这一个问题。
比如新建一个test目录,然后统一为该目录下所有的类文件设置一个命名空间。

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan