• ベストアンサー

layoutとviewの分け方

環境:CAKEPHP1.3 質問: 1.なぜ表示するのにlayoutとviewが存在し、layoutにviewをはめ込み表示させるのでしょうか? (layoutあるいはviewのみでも表示は可能だと思うのですが、、、) 2.layout、viewそれぞれのファイル(.ctp)にはphpとhtmlどちらで書くのが適切でしょうか? 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • LOHA
  • ベストアンサー率52% (203/388)
回答No.1

>1.なぜ表示するのにlayoutとviewが存在し、layoutにviewをはめ込み表示させるのでしょうか? >(layoutあるいはviewのみでも表示は可能だと思うのですが、、、) ウェブサイトを作ってみると分かるかと思いますが、非常に多くのケースで、共通の場所というのがあります。 例えば、OKWave(http://okwave.jp/)でいうなら、上部・下部は同じ表示であることが確認できます。 このような、同じ箇所を毎回viewに書くのは無駄なので、CakePHPではテンプレートのような感じで表現できるように成っています。 それがlayoutです。 >2.layout、viewそれぞれのファイル(.ctp)にはphpとhtmlどちらで書くのが適切でしょうか? .ctpでは、通常のPHPと同様に記述を行います。 なので、「phpとhtmlどちら」ということはありません。PHPの文法通りです。 もっと具体的に言えば、普通にHTMLだけを記述すれば、その部分はパースされずHTMLがそのまま出力されますし、PHPタグ(<?php ?>とか)でくくった部分はPHPとして処理されます。 ただし、layoutにしろviewにしろ、動的に出力しないと意味無いですから、通常はPHPの処理の記述が、どこかに入るはずです。 例えば、layoutであれば、"<?php echo $content_for_layout; ?>"などが記述されるはずです。 http://gihyo.jp/dev/serial/01/cakephp/0010 とりあえず下記を見てみてはいかがでしょうか? http://gihyo.jp/dev/serial/01/cakephp

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • cakephpのビューの使い方

    cakephpのビューの使い方 windowsxp環境にxamppをインストール php:5.3.1 cakephp:1.2.6 書籍を読みながらcakephpを始めました。 フォームを利用するサンプルを試しています。 コントローラーで変数に値をセットし ビューでの変数の表示方法の記述がよくわかりません。 コントローラで $this->set("result",$result); とし ビューctpで <html> <body> <h1>送信結果</h1> <p><?=$result ?></p> </body> </html> と記述されているのですが、ブラウザには変数が表示されません。 <?php echo $result ?>と書けば表示されるのですが <?=$result ?>という書き方ですとなにも表示されません。 どなたかアドバイスをいただけると助かります。 作成日: 2010年4月2日(金) 21時05分

    • ベストアンサー
    • PHP
  • 「レイアウト1」に2つのビューを作成する

    AutoCAD 2000iです。宜しくお願いします。  「モデル」の図形を「レイアウト1」で表示させ、別の「モデル」の図形、又は同じ「モデル」でも「レイアウト1」で表示させなかった図形を別のビューとして、「レイアウト1」に取り込む方法はどのようにすれば良いのでしょうか。

  • [CakePHP1.3] viewとlayouts

    view配下のファイルとlayout配下のファイルとでは以下の違いがあるかと思います。 layout配下 ・コントローラから渡された変数を表示できる ・php関数が利用できる view配下 ・コントローラから渡された変数を表示できない ・htmlタグで表示する viewはlayoutの中で利用するようできていることからすると、定形的なもの(たとえばTOPの紹介文など)を書き込んで利用するかと思いますが、使い方としては正しいでしょうか。 また、場合によっては(layoutの中でviewを)切り替える必要性が出てくると思いますが、できるとすればどのように制御するのでしょうか? ※例文などあると助かります。 ご存じの方、アドバイスをお願いします。

    • ベストアンサー
    • PHP
  • cakePHP デザイナーの分業

    今cakePHPを勉強中です。 いくつかのサンプルサイトを作ってようやく理解できて来たかなと思っている所なのですが、分業の件で実際の業務で使っている方はどうやっているのかお聞きしたいことがあります。  それはcakePHPの場合デザイナーはどのような手順、開発環境で効率的にデザインを落とし込んでいるのかということです。 自分は今までdreamweaverで作っていたのですが、ctpファイルはデザインビューで表示されないし、cssスタイルパネルで操作できないしで、どうも効率が悪いです。 普通は別のhtml,cssファイルでモックアップを作り、それからctpファイルに落とし込むのでしょうか、それとも別のやり方があるのでしょうか。 どなたか意見、アドバイスなどお願いします。

    • ベストアンサー
    • PHP
  • cakephpのデフォルトのページ設定

    cakephp初心者です。 色々なサイトのインストール手順を見て、 apacheでドキュメントルートを設定した、 /var/www/html/cakephpとして、cakephpのファイルを配置しました。 ブラウザからアクセスすると http://localhost/cakephp/自分の作成したディレクトリ というアクセス方法になります。 今は自宅の仮想サーバに入れていますが、もし外部のサーバに入れてドメイン名がついた場合、 http://ドメイン名/cakephp になってしまいますよね? http://ドメイン名 で、/var/www/html/cakephpにアクセスできるようにするには、 どのようにしたらいいのでしょうか。 現在、 http://ドメイン名 を打つと、cakephpのデフォルトの Release Notes for CakePHP 2.5.8. がタイトルのページが表示されています。 ここをデフォルトのページではなく、こちらで用意したViewのctpファイルを表示させてControllerで制御したいのです。

    • 締切済み
    • PHP
  • Zend_Layoutについて

    下記URLを参考にZend_Layoutを試しているのですが http://akrabat.com/tutorial/simple-zend_layout-example/ sidebar.phtmlで変数を出力する事ってできますでしょうか? 同フォルダのlayout.phtmlやscriptsフォルダのコンテンツを 表示するphtmlでは出力できるのですがこれだけ出力されない 状況です。 class IndexController extends Zend_Controller_Action { public function indexAction() { $this->view->list = '1'; } } それぞれのアクションメソッドに $response->insert('sidebar', $this->view->render('表示したいファイル名.phtml')); と指定してやればいい事ではあるのですが同様のファイルを複数 作成するのは微妙なので・・・ 例えば、sidebar.phtmlで展開し・・・ <ul> <? php if ($this->list == 1) : ?> <li>リスト1</li> <? else if ($this->list == 2) : ?> <li>リスト2</li> <? endif; ?> </ul> のような使用イメージです。 質問内容と若干ずれるのですが表示はZend_LayoutでするのとSmartyを 使うのとどちらがいいのでしょうか? 判断材料がなく困っているので参考までにご意見を伺えますと幸いです。

    • ベストアンサー
    • PHP
  • CakePHP の default.ctp に処理を書くには。

    CakePHP 初心者です。 現段階で、各 view のテンプレート1つに付き、コントローラーとモデルを用意するということを知りました。また、全体を通しての大元のテンプレートは default.ctp というファイルを用意すれば良いことも知りました。 ですが、常にサイドバーにデータベースより最新10件の投稿を取得し、出力するということがしたい場合、default.ctp に直接コードを書くしかないのでしょうか。default.ctp のコントローラーやモデルを用意することはできないのでしょうか。 とても初歩的な質問になるかと思いますが、ご回答お待ちしております。 面倒でなければ例なども頂けると幸いです。

    • 締切済み
    • PHP
  • cakephpの命名規則について

    cakephp初心者です。 cakephpはテーブル名、モデル名、コントローラ名、ビュー名、が規則によって付けられますが、 複数人で開発する場合、 同じテーブルを参照しようとすると、同じ名前のビューフォルダなどが出来てしまうのではないですか? テーブル名:users モデル名:User コントローラ名:UsersController ビューフォルダ:Users   ビューファイル:index.ctp usersテーブルを参照する場合、みんな同じコントローラ名、そして、ビューフォルダ名になると思うのですが、 どうやって別々のページを作っていくのですか? 上手く質問出来ていませんし、勉強不足だとは承知しています。 どうしてもCakePHPに苦戦しています。 開発の進め方を出来るだけ分かりやすく説明して頂けると嬉しいです。

    • ベストアンサー
    • PHP
  • ツリービューを使って、エクスプローラのようなものを作りたい。その二

    以前、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=372373 の『ツリービューを使って、エクスプローラのようなものを作りたい』という質問をした者です。 そこで教えていただいたプログラムを使って、一応は出来たのですが、このツリービュー内にフォルダだけでなく、ファイルも同時に表示させることは出来るんでしょうか。 実は、今まではDriveListBox、DirListBox、FileListBoxを組み合わせていたのですが、ツリービューに統合しようとしています。 前の質問で教えていただき、フォルダはしっかりと表示されるようになりましたが、ファイルは表示されません。 一階層だけなら、ファイルも表示できるプログラムは以前から作っていたので出来ると思っていたのですが、どうしても出来ません。 ファイルを選択してそれをRichTextBoxなどに表示させるというのが目的です。前述の三つの組み合わせや、教えていただいたプログラムにFileListBoxを付けてもいいんですが、それだと不恰好になってしまうので…… TreeViewにファイルを表示させる方法を教えてください。よろしくお願いします。

  • Undefined indexというエラーについて

    初めまして。プログラミング初心者です CakePHPでちょっとした機能、つまりあるページには注意事項を表示し、 あるページには表示しない。といった単純な実装をしたいです。 app/View/Contracts/detail.ctpというファイルに 下記の判定文を書き、テキストの表示/非表示を試みていますが エラーが表示されてしまいます。 Notice (8): Undefined index: status [APP/View/Contracts/detail.ctp, line 34] ーーーーーーーーーーーーーーーーーーーーーーーーーー 行 コード 33 <?php 34 if($this->request->query['status']) { //判定文 35 36 echo ''; // "全て以外" 37 38 } elseif($this->request->query['campaign_id']) {  //それ以外の判定文 39 40 echo 'テキスト'; 41 } 42 ?> ーーーーーーーーーーーーーーーーーーーーーーーーーー statusというテーブルをSQLで登録してあり、クエリパラメータを判断材料として 実装したいです。 indexとの関係について調べれば良いのでしょうか? どうぞよろしくお願いします。

このQ&Aのポイント
  • 純正インクを使っているにも関わらず、パソコン上でインクの残量が表示されない問題が発生しています。
  • EPSONの製品を使用しており、純正インクを正しく装着していますが、パソコン上の残量表示が表示されません。
  • インクの残量を知りたいため、パソコン上で表示される残量情報が必要ですが、正しく表示されません。
回答を見る