我有一个 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