html – Anchor Tag中的CakePHP Span标签
我正在尝试让Cake
PHP输出一个如下所示的链接:
<a href="/foo/bar" class="some other classes"> <span class="icon new"></span>FooBar</a> 所以我在视图中使用以下代码 <?php echo $this->Html->link( $this->Html->tag('span',null,array('class' => 'icon new')) . "FooBar",array('controller' => 'foo','action' => 'bar'),array('class' => 'some other classes','escape' => false) ); ?> 但CakePHP输出如下: <a href="/foo/bar" class="some other classes"> <span class="icon new">FooBar</span></a> 这打破了我的设计.如何在< span>之后让CakePHP附加“FooBar”标签? 编辑:还值得一提的是我知道< span>标签通常不应该在锚标签内,但在必须的情况下. 解决方法
您需要使用空字符串而不是null作为span的文本,然后您的代码将按预期工作.
查看HtmlHelper的源代码,null被视为“特殊”值,只会创建跨度的开始标记.你可以在这一行看到这个: https://github.com/cakephp/cakephp/blob/2.3.2/lib/Cake/View/Helper/HtmlHelper.php#L906 将您的代码更改为此代码应该可以正常工作; echo $this->Html->link( $this->Html->tag('span','','escape' => false) ); 关闭< / span>的附加说明 对于那些想知道的人,有点解释: 结束< / span>在你的例子中,实际上不存在于CakePHP生成的输出中,但是由浏览器自动“添加”.如果您在浏览器中查看HTML的来源,您会发现这实际上是HTML中的内容: <a href="/foo/bar" class="some other classes"> <span class="icon new">FooBar</a> 如你所见,没有关闭’跨度’ 因为< span>未关闭,浏览器将尝试更正此错误并自动假设您“忘记”关闭它.因此,它将添加一个结束< / span>在它找到的下一个标记之前(在这种情况下是结束< / a>). 浏览器中的“检查器”将始终显示浏览器用于呈现输出的HTML.这包括由浏览器和动态生成的元素(例如,通过JavaScript添加的元素)进行的自动更正. 要检查PHP脚本的输出,请始终查看源,而不是检查器 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |