我正在使用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"><i class="gicon-edit"></i></a>
如何编写正确的HTML代码?
答案 0 :(得分:36)
<强>解释强>
将'escape'=>false
选项添加到您的链接会使其不会尝试翻译('escape')您的所有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 - 只是为了便于阅读而将其分解为此。
答案 1 :(得分: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,但可以使你想要更简单地编写锚标记。
当我不想在链接中使用简单文本时,我个人采用这种方法,因为它比使用link
'escape'=>false
方法更具可读性。
答案 2 :(得分: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
)