20

我正在使用 CakePHP 2.2,需要编写以下代码 -

<a data-original-title=" Edit " data-placement="left" rel="tooltip" href="/admin/static_pages/edit/1" class="btn btn-small">
  <i class="gicon-edit"></i>
</a>

我在 CakePHP 中编写了以下代码 -

 <?php echo $this->Html->link($this->Html->tag('i', '', array('class' => 'gicon-edit')),array('controller'=>'static_pages','action'=>'edit',$page['StaticPage']['id']), array('rel'=>'tooltip','data-placement'=>'left','data-original-title'=>'Edit','class'=>'btn btn-small'));  ?>

并得到以下结果 -

<a class="btn btn-small" data-original-title="Edit" data-placement="left" rel="tooltip" href="/erudites/admin/static_pages/edit/1">&lt;i class="gicon-edit"&gt;&lt;/i&gt;</a>

应该如何编写正确的 HTML 代码?

4

3 回答 3

38

解释:

'escape'=>false选项添加到您的链接使其不会尝试翻译(“转义”)您的所有 html 字符。

此外,我很少(如果曾经)发现使用 CakePHP 的->tag(). 只需编写标签 - 更容易(更高效)。

示例代码:

echo $this->Html->link(
   '<i class="gicon-edit"></i>',
    array(
        'controller'=>'static_pages',
        'action'=>'edit',
        $page['StaticPage']['id']
    ),
    array(
        'rel'                 => 'tooltip',
        'data-placement'      => 'left',
        'data-original-title' => 'Edit',
        'class'               => 'btn btn-small',
        'escape'              => false  //NOTICE THIS LINE ***************
    )
);

详情在这里: http ://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::link

PS 显然,如果您愿意,代码可以是 1-liner - 只是为了便于阅读而将其分解在这里。

于 2013-06-06T14:27:09.227 回答
2

url您可能会发现使用HTML 帮助器的方法更容易处理这种链接:-

<a data-original-title=" Edit " data-placement="left" rel="tooltip" href="<?php echo $this->Html->url(array('controller'=>'static_pages','action'=>'edit',$page['StaticPage']['id'])) ?>" class="btn btn-small">
  <i class="gicon-edit"></i>
</a>

这仍然可以正确路由 URL,但可以使编写锚标记完全按照您的需要简单得多。

当我不想要链接中的简单文本时,我个人会采用这种方法,因为它比使用link带有'escape'=>false.

于 2013-06-06T14:35:47.757 回答
2

扩展 drmonkeyninja 的答案:

对于 CakePHP 3.X,您将使用:

<a data-original-title=" Edit " data-placement="left" rel="tooltip" href="<?php echo $this->Url->build(array('controller'=>'static_pages','action'=>'edit',$page['StaticPage']['id'])) ?>" class="btn btn-small">
  <i class="gicon-edit"></i>
</a>

$this->Url->build而不是$this->Html->url

于 2016-06-22T14:13:15.453 回答