繁体   English   中英

如何从Magento中的phtml提取xml中的block标签?

[英]How to fetch block's label in xml from phtml in Magento?

我的布局文件中有一个自定义块,如下所示:

<block type="xxx/xxx" name="xxx" template = "bar.phtml">
<label>Foo</label>
</block>

如何从bar.phtml获取label的值?

请注意,我不想使用setData函数设置变量并将其传递。 我想从phtml(或其他任何地方)提取标记内的值。 我希望清楚。

我不认为有一种真正经典的Magento方法,因为就我们所说的前端而言,不显示块目的标签。

label :此元素从Magento 1.4开始引入。 它定义了手柄的标签,该标签在管理面板的某些区域中显示为描述性参考。

资源

我真的很建议您不要使用下面的代码 但是,如果这确实是您想要实现的,则可以采用以下方法:

首先,我们获得layout =该页面的布局的大xml串联,其中包含定义块的xml的页面,因此我们的标签

$layout = $this->getLayout();

然后我们获得布局中的当前块名称

$currentBlockNameInLayout = $this->getNameInLayout();

然后,我们可以获取表示模板中当前块的XML节点。
getXpath()确实返回一个数组,所以这就是为什么我使用list()从该数组中获取第一项的原因

list($currentBlockInLayout) = $layout->getXpath("//block[@name='".$currentBlockNameInLayout."']");

我们拥有想要的东西,并且可以回显其标签元素

echo $currentBlockInLayout->label;

不过请注意,这是一个Mage_Core_Model_Layout_Element类型的对象,因此,如果您要执行其他操作而不是显示它,则必须使用__toString()方法

var_dump( $currentBlockInLayout->label->__toString() );

完整代码:

$layout = $this->getLayout();
$currentBlockNameInLayout = $this->getNameInLayout();
list($currentBlockInLayout) = $layout->getXpath("//block[@name='".$currentBlockNameInLayout."']");
echo $currentBlockInLayout->label;
var_dump( $currentBlockInLayout->label->__toString() );

在您的XML中,使用操作方法setData

<block type="xxx/xxx" name="xxx" template = "bar.phtml">
    <action method="setData">
        <label>Foo</label>
    </action>
</block>

然后在bar.phtml文件中,可以使用$this->getData('label')进行检索:

<?php echo $this->getData('label') ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM