首页 > 解决方案 > 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

标签: phpyii2

解决方案


如果您使用的是 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

注意:如果您尝试添加@appbootstrap.php,它将由框架自动重新分配。

注意 2 :您可以在BaseYii.php中查看 yii2 自动加载器是如何工作的


推荐阅读