无法从事务性电子邮件模板中传递块指令中的变量

时间:2014-02-26 10:54:24

标签: magento email block transactional-email

我已加载New Order交易电子邮件以插入自定义块。我在订单商品表格布局句柄调用下插入它,并尝试将其传递给$order变量。

{{layout handle="sales_email_order_items" order=$order}}
...
{{block type="mymodule/sales_order_email_description" order=$order}}

在Mymodule_Block_Sales_Order_Email_Description类中我写道:

protected function _construct() {        
    $this->setTemplate('email/order/description.phtml');
}

最后在description.phtml中我尝试访问订单:

$order = $this->getOrder();
...
$order->getId()

此时,异常上升: Fatal error: Call to a member function getId() on a non-object ... ...

我遵循了几个教程,比如magento email templates,但我仍然坚持这个致命的错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

让我们来看看;

您可以使用模板定义块,不再需要构造。 {{block type="mymodule/sales_order_email_description" template="email/order/description.phtml" order=$order}}

确实,您可以使用$this->getOrder()获取参数值。但$order->getId()可能无效,$order->getEntityId()。 也许您可以尝试使用var_dump查看是否有任何订单数据。

答案 1 :(得分:-1)

在.phtml文件中尝试此操作:

$order = $this->getData('order');

如下所述:http://www.webspeaks.in/2011/06/customize-new-order-email-template-in-magento.html