【发布时间】:2013-08-11 02:08:40
【问题描述】:
CakePHP 2.3.8 版
如果我使用public $tasks = array('Email'); 和$this->Email->execute(); 输出级别,即Console/cake Test --verbose 将在电子邮件任务中使用详细输出。但是,如果我使用 TaskCollection 对象动态加载任务,则不会。它只使用默认的 NORMAL 输出电平。
class TestShell extends AppShell {
public function main() {
$Email = $this->Tasks->load('Email');
$Email->execute();
}
}
class EmailTask extends Shell {
public function execute() {
$this->out('Some debugging output', 1, Shell::VERBOSE);
}
}
如何设置 TestShell 以在动态加载时将输出级别传递给 EmailTask?
更新:我尝试将 getOptionParser() 添加到 Shell 和 Task,以便可以按照 Cookbook 使用 $this->params['verbose'],但我收到错误:未定义索引:详细。
public function getOptionParser() {
$parser = parent::getOptionParser();
$parser->addOption('verbose', array(
'help' => 'Enable verbose output.',
'boolean' => true
));
return $parser;
}
用某种解决方案更新
我可以像这样手动将参数传递给任务:
public function main() {
$Email = $this->Tasks->load('Email');
$Email->params =& $this->params;
$Email->execute();
}
但TaskCollection 不应该为我做那件事吗?
【问题讨论】:
-
您应该始终提及您正在使用的确切 cakephp 版本。
标签: cakephp cake-console