Yii2 控制台:找不到应用程序\模型类,但找到通用\模型



我有一个 Yii2 Web 应用程序,其中包含 50+ 个模型类文件,这些文件位于/models目录中。

现在我想使用这些模型从/console/controllers/MyController.php运行一些控制台脚本,但class appmodelsModelName not found错误,尽管顶部有use appmodelsModelName

如果我将模型文件复制到/console/models/ModelName.php/common/models/ModelName.php(并在使用中进行更改(,它可以正常工作。是否有任何选项可以使用/model 中的模型,或者我应该重构应用程序,以便 Web 和控制台都使用来自/common/models的模型文件

如果您使用的是 yii2-高级构建,请记住,每次都会根据您使用的应用程序部分设置@app别名。

如果你从frontend进行调用,@app将等于/path/to/project-root/frontend。

如果来自backend-/path/to/project-root/backend。

console-/路径/到/项目根目录/控制台

您可以在/common/config/bootstrap.php中添加自定义别名,以使您的类可以从 root 使用。

例如,尝试将Yii::setAlias('@root', dirname(dirname(__DIR__)));添加到/common/config/bootstrap.php并将命名空间设置为root/models

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

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

最新更新