【问题标题】:Yii Console Application does not auto-import Model as web appliccationYii 控制台应用程序不会自动导入模型作为 Web 应用程序
【发布时间】:2015-11-12 03:25:23
【问题描述】:

这是我的console.php,和main.php一样

return array(
'basePath' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '..',
'name' => 'My Console Application',

// preloading 'log' component
'preload' => array('log'),

 // autoloading model and component classes
'import' => array(
        'application.models.*',
        'application.components.*',
        'application.extensions.*',
),

Web 应用程序可以毫无问题地访问这些功能。但是,控制台应用程序会产生错误

Fatal error: Call to undefined method Myfunction::get_all_recipients() 

关于这个问题的讨论也可以在

找到

https://github.com/yiisoft/yii/issues/2344

也尝试了建议

Yii Command Line Does Not Autoload Models

但它仍然不导入模型类。

【问题讨论】:

  • 为什么第二个答案没有帮助?请显示您要导入的模型、位置以及控制台配置的 import 部分下的内容。
  • 所有模型都位于 protected/models/* 下,导入部分与上面相同。

标签: yii scheduled-tasks console-application cron-task


【解决方案1】:

第二种解决方案应该可行,但有时我会使用另一种方法。在控制台命令本身中添加以下内容:

Yii::import('application.models.YourModel');

Yii::import('application.models.Subfolder.YourModel');

例如,如果它位于子文件夹中;

这应该放在您的代码被处理之前。这只会自动加载您当前命令所需的模型或类。

【讨论】:

  • 这实际上是解决问题的理想方案/谢谢
猜你喜欢
  • 1970-01-01
  • 2019-10-13
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多