簡體   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