为什么我们使用escape =>在cakephp中是假的

时间:2016-12-27 11:02:12

标签: php cakephp-2.3

echo $this->Html->link(
    '<span class="glyphicon glyphicon-remove"></span> Cancel',    
    array(
        'action'=>'index', 
        'page:'.$this->request->data['Transaction']['page']
    ),
    array(
        'class'=>'btn btn-default', 
        'escape'=>false
    ), 
    'Do you want to cancel ?'
);

3 个答案:

答案 0 :(得分:0)

$title中的HTML特殊字符将转换为HTML实体。要禁用此转换,我们在$options数组中将escape选项设置为false:

$this->Html->link($title, $url, $options);

阅读:Manual

答案 1 :(得分:0)

因为您的标签是HTML而不是纯文本。

您不希望插入文字<span class="glyphicon glyphicon-remove"></span>文字,您希望HTML标记显示图标。

    // lib/Cake/View/Helper/HtmlHelper.php
    if (isset($options['escapeTitle'])) {
        $escapeTitle = $options['escapeTitle'];
        unset($options['escapeTitle']);
    } elseif (isset($options['escape'])) {
        $escapeTitle = $options['escape'];
    }

    if ($escapeTitle === true) {
        $title = h($title);
    } elseif (is_string($escapeTitle)) {
        $title = htmlentities($title, ENT_QUOTES, $escapeTitle);
    }

答案 2 :(得分:0)

默认情况下,所有HTML字符都将在视图上进行转义,就像在其上使用htmlentities()一样,因此,CakePHP助手(在本例中为$this->Html->link())创建的所有元素都需要param 'escape' => false以避免转换,无论是尝试在标签中使用嵌套标签还是嵌套HTML。

Reference