CakePHP HtmlHelper关闭标签

时间:2014-04-10 17:30:32

标签: cakephp cakephp-2.0

如果您永远不能使用HtmlHelper关闭标记,有人可以解释为什么这很有用吗?

// No text specified.
<?php
echo $this->Html->tag('span', null, array('class' => 'welcome'));
?>

// Output
<span class="welcome">

在理想的世界中,可以通过某种方式创建结束标记,例如</span>

1 个答案:

答案 0 :(得分:2)

嗯,&#34;有用性&#34;取决于它是如何使用的。

首先,没有HtmlHelper->closeTag函数,因为标记函数包围了里面的字符串(或元素)。实施例

echo $this->Html->tag('span', "i'm a span", array('class' => 'welcome'));

// Output
<span class="welcome">i'm a span</span>

如果HtmlHelper打开并关闭函数内的标签,那么拥有closeTag函数真的没有意义。

显然,未公开的<span>标记也不是很有用,而且该示例并不是显示某些用途的最佳标记(我知道它在蛋糕文档中,而不是指责你。

由于HTML不是XML,因此可能会出现未关闭的标签(请查看HTML specs)。该链接是一个定义为 void elements 的列表,它们是:

  

area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr

该链接引用的方法很少,它是写的

  

Void元素只有一个开始标记;不得为void元素指定结束标记。

Soooo ....你可能想要这样做。您可以使用复杂且字符数较多的昂贵命令编写<br>。也许你想在php中编写整个.cpt视图,而不是正常字符串的回声,只有纯PHP和HtmlHelper的优点(比如转义html字符)。

所以,从理论上讲,你可以做到

echo $this->Html->tag('br', null, array());
echo $this->Html->tag('link', null, array());

那将是有效的标签。为什么要这么做? *耸肩*谁知道。但是你有这个选择并不是很好吗?

此外,HtmlHelper可能会使用该函数internaly来编写其他标记。我的意思是,也许HtmlHelper->img()使用HtmlHelper->tag('img', null),并且由于标记功能是公开的,所以你也可以获得看似无用的选项。

我知道它听起来不那么有用&#34;仍然,但它是重要的小事......