问题
当我尝试通过以下方式将块添加到我的交易电子邮件模板中时:
{{block type='core/template' area='frontend' template='invent/baskettimer/email_items.phtml' record=$record}}
我收到以下错误,并且没有呈现任何内容。
CRIT (2): Not valid template file:frontend/base/default/template/invent/baskettimer/email_items.phtml
故障排除
- 通常这个警告指向一个打破继承的错字,但我已经检查了四次,这应该可以工作。
- 然后我将文件复制到基础中并进行了测试,它正确呈现。
- 创建自定义块并设置模板,显示相同的错误。
理论
对我来说,模板继承似乎被破坏/没有为电子邮件实现,所以它总是在基础上查找,我不能把我的模板放在那里,所以我不知道如何调用它们。
可能的解决方法
- 将块渲染为 html,然后将其作为要渲染的变量发送,问题是我正在从模型级别发送电子邮件,并且很难预渲染块,即使使用助手也是如此。
- 使用方法渲染数据,真的不想这样做,因为它是消息/针对 MVC。
任何帮助深表感谢。
赏金更新
所以我已经追查了这个问题,现在这可能是一个简单的解决方案。
问题是我从 cronjob 调用它没有正确的存储视图,使用 shell 脚本很容易复制类似的情况,然后将 _appCode 更改为 null。
<?php
require_once 'abstract.php';
class Mage_Shell_Shell extends Mage_Shell_Abstract
{
protected $_appCode = ''; // works - remove to not work
/**
* Run script
*
*/
public function run()
{
Mage::getModel('invent_baskettimer/email')->sendJob();
}
}
$shell = new Mage_Shell_Shell();
$shell->run();
所以基本上问题变成了:
block->toHtml()
无论商店视图如何,我如何调用?