« Kyon30~なんてったって30年!~買った | トップページ | [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ2 »

2012年5月18日 (金)

[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 »

プログラム・スクリプト」カテゴリの記事

2019年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Amazonリンク

ダイビング写真(swf)

ブログ内検索

  • Google
    WWW を検索
    ブログ内を検索

リンク(いつもお世話さま)

  • ソニーストア
     iTunes Store(Japan)
    Just MyShop(ジャストシステム)
    ブックオフオンライン
無料ブログはココログ