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,以便可以$this->params['verbose']
按照 Cookbook 使用,但出现错误:未定义索引:详细。
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 不应该为我做那件事吗?