【发布时间】:2011-05-26 03:44:20
【问题描述】:
我担心我偶然发现了未知的 Magento 领域。我已经用尽了剩余的谷歌搜索能力,而且还不够,所以我想我会在这里碰碰运气。
我们的平台是 Magento Enterprise 1.9.1.1。
我们使用一种古老的打印解决方案,通过 ODBC 读取订单。因此,我们不能直接从 Magento 的 MySQL 数据库中读取它(由于更改的可能性很高)。我所做的是扩展 Mage_Sales_Model_Order 以拦截 _beforeSave() 函数,并在返回 parent::_beforeSave() 之前直接对另一个数据库进行 SQL 查询。可能有更好的方法可以做到这一点,但它现在已经完成,而且功能正常,而且不管它不是我的问题所在。
如果抛出任何 SQL 错误,更新将回滚,错误和订单数据将传递给一个函数,该函数将电子邮件发送到包含错误信息的邮件列表。 /locale/en_US/template/email/ 中的电子邮件模板文件调用 .phtml 文件来处理数据数组,如下所示:
{{block type='core/template' area='frontend' template='/email/errors/order/beforesave.phtml' orderdata=$orderdata errors=$errors}}
这是我从 /locale/en_US/template/email/sales/shipment_new.phtml 借来的功能。这也是我遇到障碍的地方。如果用户在处理订单时遇到错误,电子邮件会从前端正常触发。如果您从 adminhtml 更改订单,则会发送电子邮件,但没有上述阻止。
我已经尝试在块调用中使用和不使用 area='frontend',并且脚本表现出相同的行为。
我认为问题可能出在我的 XML 中,尽管它发现模板本身从管理员和前端都很好(并且这个块不需要在我的 XML 的任何地方定义)。我也无法在 Magento 自己的文件或 Internet 上的任何地方找到任何此类示例。
任何帮助都将不胜感激。这让我头疼!
- 迈克
【问题讨论】:
标签: email templates magento block adminhtml