我有一个report.phtml,我每个月都会创建一个PDF文件并将其发送到某个电子邮件。
我正在尝试使用Magento Cronjob自动化该过程。
我知道Magento具有处理cronjobs的内置功能,但该解决方案涉及一个模型。我试图在模型中呈现报告,但我什么都没得到。
class MyModule_Model_Report extends Mage_Core_Model_Abstract
{
public function generateReport()
{
$content = $this->getLayout()->createBlock(
'Mage_Core_Block_Template', 'mymodule.report', array(
'template' => 'mymodule/report/report.phtml',
)
)->toHtml(); // nothing returns as we can't render layouts in model
mail('test@test.com', 'monthly report', $content);// for now just testing email
// rest of the PDF generation and emailing script
}
}
mymodule的config.xml
<config>
...
<crontab>
<jobs>
<namespace_module>
<schedule>
<cron_expr>0,15,30,45 * * * *</cron_expr>
</schedule>
<run>
<model>mymodule/Report:generateReport</model>
</run>
</namespace_module>
</jobs>
</crontab>
...
</config>
如果我创建控制器并将上面的generateReport函数放在上面,它可以正常工作。
class MyModule_ReportController extends Mage_Core_Controller_Front_Action
{
public function generateReportAction()
{
$content = $this->getLayout()->createBlock(
'Mage_Core_Block_Template', 'mymodule.report', array(
'template' => 'mymodule/report/report.phtml',
)
)->toHtml(); // it returns the report.phtml contents
mail('test@test.com', 'monthly report', $content); // for now just testing email
// rest of the PDF generation and emailing script
}
}
有人可以指导我如何在这种情况下创建一个cronjob。
提前致谢!