Yii2 模块 自定义模块目录
程序员文章站
2024-01-11 13:49:34
...
请教一下各位,yii2的模块创建后(比如如下的forum模块),官方的标准是如下目录结构。
请问可以在该模块下手动创建一个目录么?比如common目录,如果可以的话调用该目录里的类文件与Yii1.1中的components一样么?
现在想把该模块通用的类放到该目录,就像YII1.1中的components目录一样,多谢了
请问可以在该模块下手动创建一个目录么?比如common目录,如果可以的话调用该目录里的类文件与Yii1.1中的components一样么?
现在想把该模块通用的类放到该目录,就像YII1.1中的components目录一样,多谢了
forum/
Module.php 模块类文件
controllers/ 包含控制器类文件
DefaultController.php default 控制器类文件
models/ 包含模型类文件
views/ 包含控制器视图文件和布局文件
layouts/ 包含布局文件
default/ 包含DefaultController控制器视图文件
index.php index视图文件
回复内容:
请教一下各位,yii2的模块创建后(比如如下的forum模块),官方的标准是如下目录结构。
请问可以在该模块下手动创建一个目录么?比如common目录,如果可以的话调用该目录里的类文件与Yii1.1中的components一样么?
现在想把该模块通用的类放到该目录,就像YII1.1中的components目录一样,多谢了
forum/
Module.php 模块类文件
controllers/ 包含控制器类文件
DefaultController.php default 控制器类文件
models/ 包含模型类文件
views/ 包含控制器视图文件和布局文件
layouts/ 包含布局文件
default/ 包含DefaultController控制器视图文件
index.php index视图文件
没什么经验,不过从你列出的默认结构来看直接创建目录应该是无法自动加载的,需要添加一些设置,类似 namespace => 'Common', path => 'forum/common',具体怎么做参考一下models或者controllers的配置就行了。
这种相当于加组件类,主要是把自己添加的类路径和参数, 在config目录中的main.php进行配置,这样的就可以自动加载,可以仿照db配置connection时的样子 :
(主要应该是自定义class的路径 例如可以是forumcommonutil。对应util类的命名空间可以是namespace forumcommon)
[
'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;
},
],
]
多谢各位。
发现可以通过命名空间解决这一个问题。
比如新建一个test目录,然后统一为该目录下所有的类文件设置一个命名空间。