2013-03-30 57 views
0

我在Module.php設置幾個默認元參數應用:Zend框架2:清除從headMeta()視圖助手的某些元PARAM?

$hm = $serviceManager->get('ViewHelperManager')->get('headMeta'); 
$hm 
    ->appendProperty('og:image', '/images/opengraph/1.jpg') 
    ->appendProperty('og:image', '/images/opengraph/2.png'); 

後來一個在一些行動需要重寫這些元PARAMS並設置一些其他圖像。我不知道如何清除這些現有的'og:image'params ...我試過了:

$hm->appendProperty('og:image', null); 
//and 
$hm->unsetProperty('og:image'); 

但是沒有工作。任何幫助?

回答

2

這是因爲append方法不添加OG:圖像的比已經定義的一個。 append方法會將下一個og:image追加到已經定義的og:image,最終會得到一個數組。同樣,如果你選擇prepend,這會在你已經定義的那個之前添加新的og:image標記。

我認爲你最初想要的是設置屬性的初始值,而不是對它進行懸而未決。

$hm = $serviceManager->get('ViewHelperManager')->get('headMeta'); 
$hm->setProperty('og:image', '/images/opengraph/1.jpg'); 

再後來:

$hm->setProperty('og:image', '/images/opengraph/2.jpg'); 

甚至更​​晚:

$hm->setProperty('og:image', '/images/opengraph/2.jpg'); 

如果你絕對要吹走清單,作爲最後的手段,你可以看到這個鏈接:Zend Framework: Clearing/Resetting HeadLink, HeadMeta, HeadScript, HeadStyle and HeadTitle基於在ZF1上,但看着ZF2代碼看起來是一樣的。

也許是更好的解決方案,以整體的挑戰不是急切地設置OG:圖像的模塊中,而是始終將它們儘可能晚所以你是不是在這種情況下。

+0

的洞察力 - 但我實際上做需要多個OG:圖像......所以 - 即使我打電話初始設置 - 我怎麼後來刪除它?我沒有得到一般人如何從headMeta佔位符中刪除某些東西? –

+0

我明白了。根本無法僅僅清除多個條目的列表。我會用幾個鏈接更新答案,這些鏈接將演示如何完全吹走你的headMeta並從頭開始重建它。 – bubba

+0

對不起,我沒有回答你的問題。它做headMeta如何在內部存儲的屬性...如果你追加,它成爲一個數組...如果你設置,它只是一個參數。 – bubba