【问题标题】:How to write HTML tag in CakePHP "link"如何在 CakePHP“链接”中编写 HTML 标签
【发布时间】:2013-06-06 14:22:21
【问题描述】:

我使用的是 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 代码?

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    说明:

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

    另外,我很少(如果曾经)发现使用 CakePHP 的 -&gt;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 行代码 - 只是为了便于阅读而在此处拆分。

    【讨论】:

    • 嗨戴夫,我已经应用了你建议的代码,它运行但给了我一个额外的“”标签,如下所示 -
    • @Dave,我只是申请了“”,谢谢你的帮助:)
    【解决方案2】:

    您可能会发现使用 HTML 帮助程序的 url 方法更容易处理此类链接:-

    <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,但可以使编写锚标记完全按照您的需要简单得多。

    当我不希望链接中只有简单的文本时,我个人会采用这种方法,因为它比使用带有 'escape'=&gt;falselink 方法更具可读性。

    【讨论】:

    • 唯一的缺点是后期缺乏自定义。作为一个随机示例,您可以扩展帮助器,为所有进入“帖子”控制器的链接提供一个特定的类以更改它们的颜色......等等。通过使用帮助器,您可以让所有有趣的东西保持打开/可用
    • 是的。虽然这不是我个人需要实现的目标。实际上,我更喜欢在我的模板中使用这种行为。
    【解决方案3】:

    扩展 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-&gt;Url-&gt;build 而不是$this-&gt;Html-&gt;url

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      相关资源
      最近更新 更多