2012-10-04 25 views
0

所以我寫了一個類,如:Afdding HTML元素的Zend導航

class Users_Navigation_Page_Notification extends Zend_Navigation_Page_Mvc{ 

    public function setLabel($label){ 
     if(substr($label, 0 , 1) == ':'){ 
      $label = 'Notification'; 
     } 

     return parent::setLabel($label); 
    } 
} 

如果我嘗試類似:

$label = 'Notification' . '<span>test</span>'; 

它呼應的出Notificationtest

它不該」噸。

如何讓它呈現HTML元素?

回答

1

渲染導航時,視圖幫助程序被硬編碼以轉義默認使用htmlspecialchars的每個導航頁面的標籤。這將有效地禁用HTML,因爲標籤被HTML實體替換。

你可以嘗試欺騙了一下,逃逸機制改變輸出你的導航之前:

$view->setEscape('trim'); // will allow html and remove escaping 
echo $view->navigation()->menu(); // output navigation 
$view->setEscape('htmlspecialchars'); // restore escaping mechanism 

在上面的代碼,你可以改變$view$this如果你是一個視圖腳本。

+0

因此,這是肯定正確的答案,但一個問題: 我看不到我的測試源,在所有。在這之前,它正在轉義html並以原始形式將其打印(html和全部)到屏幕上,現在它不這麼做。我沒有看到測試,只是通知這個詞。 – TheWebs

+0

奇怪的是,它剛剛離開了。您可能需要發佈更多代碼,當我使用標準Zend_Navigation進行測試時,此方法/ hack可以正常工作。 – drew010