ホームページ >バックエンド開発 >PHPチュートリアル >Yii2 模块 自定义模块目录
请教一下各位,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>
请教一下各位,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>
没什么经验,不过从你列出的默认结构来看直接创建目录应该是无法自动加载的,需要添加一些设置,类似 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>
多谢各位。
发现可以通过命名空间解决这一个问题。
比如新建一个test目录,然后统一为该目录下所有的类文件设置一个命名空间。