CakePHP1.3 (PHP/5.3.5)で開発を始めてするところです。実際にCakePHPを動かし、/top/ にマッピングされるコントローラーも書いて、対象のメソッド(?)たとえば top_controller.php の index は読み込まれているようです。(debug関数で調べました)


ですが、肝心のテンプレートが読み込まれません。
デフォルトの app/views/layouts/default.ctp が読み込まれたあとに、
app/views/top/index.ctp が展開されると思うのですが、
default.ctp の内容が表示され、中身の
'<?=$title_for_layout?>'などが展開されないで、そのまま表示されます。

どこを調べて、修正もしくは検証すればよろしいのでしょうか。

ご教授お願い致します。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/04/08 17:15:06
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

ポイント100pt

メッセージを確認していただけて良かったです。

> <?=$title。。。などは、HTMLソースに表示され、ブラウザ上では真っ白でした。

php.ini 設定ファイルのディレクティブ 「short_open_tag」を有効にしてみてください。

設定を変更できない場合は、「<?php echo $title_for_layout?>」等、「<?php echo ~」で省略せずに書く必要があります。

http://php.net/manual/ja/language.basic-syntax.phpmode.php

短縮型のタグ(例 3.)が有効なのは、php.ini 設定ファイルのディレクティブ short_open_tag が 有効になっている場合か PHP が --enable-short-tags オプションつきで configure されている場合のみです。


> index.ctp の中身は読み込んでいませんでした。

default.ctpのビューのテンプレートを読み込む位置に「<?php echo $content_for_layout ?>」を記述してみてください。

http://book.cakephp.org/ja/view/1080/%E3%83%AC%E3%82%A4%E3%82%A2...

http://libro99.appspot.com/index3?id=10003&page=2

id:subweb

お察しの通り short_open_tag でした。初心者質問で申し訳ないです。

ありがとうございます。

しかし、今度は、中身は展開されるよーになったのですが、画面が真っ白で。。。。

(HTMLソースを確認すると、展開されているのですが)

こちらの問題は、また別途詳細を調査して、分からなければ質問する事にします。

ありがとうござました。

2011/04/08 17:14:47
  • id:subweb
    コメント欄を有効にしました。
  • id:subweb
    > <?php echo $title_for_layout?> <?php echo 'テスト表示' ?>
    >
    > それから追加確認です。
    > 1.「<?=$title_for_layout?>」等は、HTMLソースを表示した場合にそのまま表
    > 示されるのですか?(※ブラウザ画面には何も表示されない。)
    > 2.「default.ctp」と同様にセットした変数は展開されないけれど、「index.ctp」の内容自体は表示されるのですか?

    rouge_2008さん
    わざわざ別ルートからありがとうございます。

    今、プログラムを動かしていたマシンが別の場所にあるため確認は出来ませんが、
    <?=$title。。。などは、HTMLソースに表示され、ブラウザ上では真っ白でした。

    default.ctpの中身を編集すると、その編集は反映されます(静的な部分は)。
    ですが、index.ctp の中身は読み込んでいませんでした。

  • id:rouge_2008
    確認ありがとうございます。
    回答させていただきました。
  • id:rouge_2008
    画面が真っ白で、HTMLソースは展開されていたという事ですが、HTMLソースには具体的に何が表示されていますか?
    ソースにも何も表示されていないのでしたら、Cakeのデバッグレベルの設定を確認してみてください。

    Configure::write('debug', 2);

    ※上記設定はcore.phpにありますが、デフォルトでは2に設定されています。
    もし0に設定されていたら、1または2に変更して、PHPのエラーメッセージが表示されるようにしてみてください。
    「Fatal error: Maximum execution time of ** seconds exceeded in ~」というエラーが表示される場合は、php.iniで「max_execution_time」の設定数値を大きくしてみてください。
    ※デフォルトで30に設定されていますが、通常はこの設定で大丈夫なはずです。
    (なるべく30秒以内で実行されるようにした方が良いと思いますので、サーバー環境を見直す方がいいかもしれません。私は詳しくありませんので、サーバー環境、CakePHPで作っているプログラム等の詳細を添えて別途質問してみてください。)



    お礼が遅くなりましたが、ポイントといるかをありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません