0

所以我写了一个这样的类:

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 元素?

4

2 回答 2

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是否在视图脚本中。

于 2012-10-04T16:53:38.343 回答
-1

在这里回答https://stackoverflow.com/a/32823280/3684315建议使用escapeLabels(false)函数来禁用转义,这似乎是一个更好的解决方案。

<?= $this->navigation()->menu()->escapeLabels(false) ?>

于 2017-07-04T11:40:58.447 回答