Email Magento-CMS语法-布局句柄更新参数
当Magento呼叫时:Email Magento-CMS语法-布局句柄更新参数,email,magento,syntax,content-management-system,Email,Magento,Syntax,Content Management System,当Magento呼叫时: {{layout handle="sales_email_order_items" order=$order}} 在电子邮件模板中,“order=$order”位只是一个参数对吗?是否将整个$order对象作为$this->getOrder()传递给phtml模板文件 我知道我曾经知道这个问题的答案,但后来忘记了=(这完全取决于特定指令的实现。在您的示例中,布局指令在 #File: app/code/core/Mage/Core/Model/Email/Templat
{{layout handle="sales_email_order_items" order=$order}}
在电子邮件模板中,“order=$order”位只是一个参数对吗?是否将整个$order对象作为$this->getOrder()传递给phtml模板文件
我知道我曾经知道这个问题的答案,但后来忘记了=(这完全取决于特定指令的实现。在您的示例中,
布局
指令在
#File: app/code/core/Mage/Core/Model/Email/Template/Filter.php
public function layoutDirective($construction)
{
...
}
$construction参数包含模板标记属性的列表。这些属性被解析为参数
$params = $this->_getIncludeParameters($construction[2]);
将实例化一个新的布局对象
$layout = Mage::getModel('core/layout');
然后,对于新布局对象中的每个块,将每个参数指定为数据参数
foreach ($layout->getAllBlocks() as $blockName => $block) {
/* @var $block Mage_Core_Block_Abstract */
foreach ($params as $k => $v) {
if (in_array($k, $skipParams)) {
continue;
}
$block->setDataUsingMethod($k, $v);
}
}
以上假设Magento 1.7.x.因此,当它将order=$order传递给phtml模板时,该对象是否已准备好放入phtml模板中?或者这取决于layout.xml文件中定义的块类型?如何调用$object?直接尝试可能比我猜测更快。不确定在尝试初始化时它为什么不起作用是的,但是获取通过layout指令传递的order=$order对象非常简单,只需$this->getOrder()。