头标签显示在CakePhp的主体内部

时间:2012-04-26 16:29:56

标签: php html cakephp tags

我在CakePhp 2.0上有一个奇怪的错误,其中head标签呈现为空,所有属于head的标签在任何内容之前呈现在正文中。

这是他的布局default.ctp的样子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <?php echo $this->Html->charset(); ?>
    <title>
        <?php echo $title_for_layout; ?>
    </title>
    <?php
        echo $this->Html->meta('icon');
        echo $this->Html->script(array('librerias/jquery.tools.min'));
        echo $this->Html->css('cake.generic');
        echo $this->Html->css('webfront');
        echo $scripts_for_layout;
    ?>
</head>
<body>
    <div id="container">
        <div id="header">
        </div>
(the rest of the html render)
</body>
</html>

正如萤火虫所说,这就是它的呈现方式:

<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
&#65279;&#65279;
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <title> Usuarios </title> **(IE moves the title tag on the head manually, it seems)**
    **(IE displays the DOCTYPE on its debugging console here)**
    <link rel="icon" type="image/x-icon" href="/web/favicon.ico">
    <link rel="shortcut icon" type="image/x-icon" href="/web/favicon.ico">
    <script src="/web/js/librerias/jquery.tools.min.js" type="text/javascript">
    <link href="/web/css/cake.generic.css" type="text/css" rel="stylesheet">
    <link href="/web/css/webfront.css" type="text/css" rel="stylesheet">
    <div id="container">
        <div id="header"> </div>
        (the rest of the html render)
</body>
</html>

这很糟糕,因为它会扭曲DOCTYPE标记并使IE渲染页面非常错误。

另外,我有另一个测试网站,它不会发生此错误。实际上我切换了布局,错误也一样。

有人知道为什么会这样吗?我在网上找不到类似的东西,我对此没有任何线索。任何帮助将不胜感激。

提前致谢

3 个答案:

答案 0 :(得分:3)

最后我们得到了这个问题的答案。这是Cake的php和臭名昭着的角色&amp;#65279出现在utf-8编码上。通过更改在最终布局之前传递的php文件的每个编码,我们解决了这个问题。

感谢您的帮助:)

答案 1 :(得分:1)

你有BOM char文件。使用BOM检测程序

java:http://www.javapractices.com/topic/TopicAction.do?Id=257 [推荐] [查找并删除]

1-检查现有BOM的URL 2-从文件中删除BOM php:http://www.dotvoid.com/2010/04/detecting-utf-bom-byte-order-mark/

答案 2 :(得分:0)

您在布局文件中缺少一个结束标记。

    <body>
        <div id="container">
            <div id="header">
            </div>
    (the rest of the html render)
    </body>
    </html>

应纠正如下

    <body>
        <div id="container">
            <div id="header">
            </div>
    (the rest of the html render)
        </div>
    </body>
    </html>