php - Yii2 控制台:app\models Class not found 但 common\models found
问题描述
我有一个 Yii2 Web 应用程序,其中包含 50 多个模型类文件,这些文件位于/models
目录中。
现在我想通过/console/controllers/MyController.php
使用这些模型运行一些控制台脚本,但得到class app\models\ModelName not found
错误,尽管use app\models\ModelName
在顶部。
如果我将模型文件复制到/console/models/ModelName.php
或/common/models/ModelName.php
(并更改使用)它可以正常工作。是否有任何选项可以使用 /model 中的模型,或者我应该重构应用程序以便 Web 和控制台都使用来自 /model 的模型文件/common/models
解决方案
如果您使用的是 yii2-advanced build,请记住@app
每次都设置别名,具体取决于您使用的应用程序的哪个部分。
如果您从 拨打电话frontend
,@app
将等于 /path/to/project-root/frontend。
如果来自backend
- /path/to/project-root/backend。
console
- /path/to/project-root/console
您可以在 , 中添加自定义别名/common/config/bootstrap.php
,以使您的类可以从根目录中使用。
例如尝试添加Yii::setAlias('@root', dirname(dirname(__DIR__)));
并将/common/config/bootstrap.php
命名空间设置为root/models
注意:如果您尝试添加@app
到bootstrap.php
,它将由框架自动重新分配。
注意 2 :您可以在BaseYii.php中查看 yii2 自动加载器是如何工作的
推荐阅读
- bash - 在不使用 ssh 的情况下使 bash 脚本可用
- python - 如何将循环分成几个阶段
- angular - 我们可以在点击事件时在 jsoneditor 中添加文本吗?
- typescript - 何时在类内的打字稿中编写公共关键字?
- python - 使用Autotools编译安装python模块到python库路径
- vbscript - 如果未应用某个主题,如何在 Windows 7 上应用它?
- python - 打印 Python def 的结果
- upload - wordpress 最大上传大小不会改变
- c++ - 如何防止基类在 C++ 中继承?
- java - 使用`when`应该返回不同的值