[CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ
書籍「CakePHP 1.3によるWebアプリケーション開発―オープンソース徹底活用」(秀和システム、掌田 津耶乃)のメモ。
フォルダ構成
ファイル名は、全て小文字で、単語をアンダースコアで接続する「アンダースコア記法」。
app/ (アプリケーションのフォルダ) + config/ (設定ファイル) + controllers/ (コントローラを配置) + コントローラ名_controller.php + models/ (モデルを配置) + views/ + コントローラ名/ (コントローラ用のビューを配置) + アクション名.ctp + layouts/ (レイアウトファイル) + xxxxx.ctp + webroot/ (静的ファイルを配置) + css/ (CSSファイル) cake/ (CakePHP本体。不可侵領域。)
URI
http://ホスト名/CakePHPフォルダ/コントローラ名/アクション名/
コントローラ
項目 | 例 |
---|---|
コントローラ名 | HelloWorld |
クラス名 | HelloWorldController |
親クラス | AppController |
内部のメソッド名 (アクション名) |
index() とか sendForm() とか。 (先頭小文字のキャメル記法。) |
フォルダ | app/controllers |
ファイル名 | hello_world_controller.php |
変数名 | 意味 |
---|---|
$name | コントローラ名。省略時はクラス名から自動判別。 |
$uses | コントローラで使用するモデル名。使用しない場合は NULL を指定するか、変数自体を定義しない。 |
$autoRender | ビューを自動レンダリングする(TRUE ※デフォ)か、アクション内でechoなどにより手動出力する(FALSE)か。 |
$autoLayout | レイアウトを使う(TRUE ※デフォ)か、使わない(FALSE)か。 |
$layout | レイアウトを使う場合、レイアウト名(ファイル名の拡張子以外)を指定する。省略時はシステムのレイアウトを使用。 |
メンバ関数(メソッド)は、そのままURIのアクションになる。
index メソッドは、URIでアクション名省略時のデフォルトアクション。
コントローラの例は、次の通り。
app/controllers/hello_world_controller.php
<?php class HelloWorldController extends AppController { public $name = 'HelloWorld'; //クラス名から自動判別可。public $uses = NULL; //あるいは空文字列public $uses = FALSE; //あるいは定義しない $autoRender = TRUE; //TRUEなら省略可。 $autoLayout = TRUE; //TRUEなら省略可。 $layout = 'hello'; //システムのレイアウトの場合、変数を宣言しない。 //デフォルトアクション function index() { //何か処理 } function アクション名() { //何か処理 } } ?>
ビュー
ビューを利用するには、コントローラの $autRender を TRUE に。
項目 | 例 |
---|---|
フォルダ | app/views/コントローラ名のアンダースコア記法 |
ファイル名 | アクション名.ctp (アクション名のアンダースコア記法。 たとえば、アクション名が「sendForm」ならファイル名は「send_form.ctp」。) |
記述内容は、レイアウトを使うか使わないか(コントローラの$autoLayout)で異なる。
- レイアウトを使う … <body>~</body>の内部のみ記述。
- レイアウトを使わない … DOCTYPEやhtmlタグなどすべてを記述。
自前レイアウト
自前レイアウトを使うには、コントローラの $autoLayout を TURE にし、$layout にレイアウトファイル名の拡張子以外の部分を指定する。
項目 | 例 |
---|---|
フォルダ | app/views/layouts |
ファイル名 | 適当なファイル名.ctp |
内容は、DOCTYPE宣言やhtmlタグなどすべて、ただし、ビューがレンダリングされた内容が埋め込まれるので、表示内容は変数 $content_for_layout を出力するのみ。これ以外にも、次のようなメソッドや変数を使う。
項目 | 種別 | 意味 |
---|---|---|
$content_for_layout | 変数 | ビューでレンダリングされた表示内容文字列。 |
$html->charset() | メソッド | 文字コードを指定するmetaタグ文字列を返す。 |
$title_for_layout | 変数 | titleタグ内に記述するページタイトルを示す文字列。ただし、CakePHP 1.2用。1.3では、コントローラで、適当な変数に値をセットする。これをしてない場合は、コントローラ名がタイトルとなる? |
$html->css( CSS名 ) | メソッド | CSSファイルを参照するlinkタグ文字列を返す。引数は、app/webroot/cssフォルダに保存したCSSファイル名の拡張子.css以外の文字列。 |
$scripts_for_layout | 変数 | scriptタグを含むJavaScriptコードの文字列。必要なときにJavaScriptコードが生成され、この変数に代入される? |
自前レイアウトの例は、次の通り。
app/views/layouts/hello.ctp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html cmlns="http://www.w3.org/1999/xhtml"> <head> <?php echo $html->charset(); ?> <title> <?php echo $title_for_layout; ?> </title> <?php echo $html->css('cake.hello'); echo $scripts_for_layout; ?> </head> <body> <div id="conainer"> <div id="header">** Header **</div> <div id="content"> <?php echo $content_for_layout; ?> </div> <div id="footer">** Footer **</div> </div> </body> </html>
« Kyon30~なんてったって30年!~買った | トップページ | [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ2 »
「プログラム・スクリプト」カテゴリの記事
- [CakePHP1.3] 秀和システムの本 メモ5 - モデルクラスのメンバ変数とコールバック(2012.06.04)
- [CakePHP1.3] 秀和システムの本 メモ4 - データベースの利用1(2012.05.31)
- [CakePHP1.3] 秀和システムの本 メモ3 - Formヘルパー(2012.05.30)
- [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ2(2012.05.22)
- [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ(2012.05.18)