2012-04-26 12 views
2

headタグが空になり、headに属するすべてのタグがコンテンツの前に本文にレンダリングされるCakePhp 2.0では、私は奇妙なエラーが発生します。CakePhpの本体にヘッドタグが表示されます

この彼のレイアウト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はページを非常にバグにします。

また、このエラーが発生しない別のテストサイトがあります。実際には私はレイアウトを切り替え、エラーは同じでした。

これがなぜ起こるのか誰かが知っていますか?私はウェブ上で何か類似したものを見つけることができず、私はこれについて何の手がかりも持っていません。どんな助けもありがとう。

ありがとうございます。

+0

おそらく間違ったファイルを見て/編集している(または保存していない)。あなたのためにDOCTYPEを自動作成するべきではありません。私はちょうどテストしました - レイアウトファイルからDOCTYPEを削除すると、レンダリングされたページからも消えてしまいました。 – Dave

+0

これは、デバッグ情報が先頭に付加されるか、またはタグとHTMLを分割するPHPコードのどこかでエラーが発生した場合に発生します。 – jeremyharris

+0

@Dave、レイアウトに加えたすべての変更がレンダリングに反映されたので、私は正しいファイルを編集していました。 – Eagle

答えて

2

最後に、我々はこの問題の答えを得たが、次のようにそれを修正する必要があります。それはutf-8エンコーディングで登場したケーキのPHPと悪名高い文字&#65279でした。最終レイアウトの前に渡されたphpファイルのすべてのエンコーディングを変更することで、この問題を解決しました。

ありがとうございます。

0

レイアウトファイルに1つの終了タグがありません。

<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> 
+0

ああ、残念です。すでにレイアウトに入っていましたが、「htmlレンダリングの残りの部分」としてコードを省略しようとすると誤って削除されてしまうことがあります。 – Eagle

関連する問題