存在
public Mage_Core_Block_Abstract::setParentBlock(Mage_Core_Block_Abstract $block)
显然它需要一个 block 对象作为参数。我尝试过:
<reference name="myBlock">
<action method="setParentBlock">
<block><reference name="newParent"/></block>
</action>
</reference>
但是,运气不佳。
有什么想法吗?
有人是否有可能从布局文件中将 block 对象传递给方法?
最佳答案
您无法从布局 XML 文件调用该方法。布局 XML 文件的 <action/>
节点主要(见下文)用于传递字符串作为参数。这意味着类型提示明确需要对象的任何方法
Mage_Core_Block_Abstract $block
不应该从 XML 中调用。它是系统实现中使用的一种方法,布局 XML 系统旨在防止您意外调用。
此外,您不能按照您尝试的方式使用引用
<reference name="newParent"/>
<reference/>
标记仅作为顶级布局句柄的直接祖先有效(在另一个位置使用引用引起的任何其他行为都是意外的实现副作用,我会对依赖所述行为保持警惕)
最后,您也许能够通过使用布局系统的“辅助参数”功能来实现您想要的效果。
<action method="setParentBlock">
<block helper="core/data/someMethod" arg1="foo" ...>
</action>
如果你能找到一个辅助类
Mage::helper('core/data');
哪里someMethod
返回您要查找的 block
Mage::helper('core/data')->someMethod(parameters,from,attributes,above);
但是在渲染中更改 block 的父级有点滥用布局系统,我建议不要这样做(除非没有其他方法可以达到您想要的效果)。
关于Magento:从布局 xml 文件中设置ParentBlock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20457025/