[英]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.