Magento:从布局 xml 文件中设置ParentBlock?

标签 magento block parent

存在

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/

相关文章:

Objective-C block ,递归失败

javascript - d3 svg 中的父节点

CSS 父 DIV 溢出

php - Magento 导入产品时出错

sql - Magento:有没有办法将所有可配置产品设置为 "Not Visible Individually"

magento - 如何根据颜色和尺寸属性通过关联的产品图像更改可配置的产品主图像?

magento - 无法初始化索引器进程

php - 使用 php 正则表达式解析 block

magento - Magento 类(class)的长度有限制吗?

metadata - Tridion 2009 - 检索组件的父文件夹 TCM