2690

CakePHPのView部分をまとめてすっきりさせる

CakePHPのView部分をまとめてすっきりさせる

2011.2.13

前回、「CakePHPで入力値を取得・表示するだけのプログラム|1bit::memo」という記事を書きました。viewsの部分のヘッダ部分など、まとめたいな、と思う事がありますよね。それをまとめるための自分メモです。

/app/controllers/sample_controller.phpを少し改良

public $layout = "sample";

というコードを追加します。これは、「/app/views/layouts/sample.ctp」を見に行く、という意味になります。sample_controller.phpを修正すると、こんな感じ↓。

public $name = "Sample";
public $uses = null;
public $autoRender = true;
public $layout = "sample";    //←コレを追加
public $autoLayout = true;  //←ここをtrueに変更

function index(){}

function result(){
    App::import("sanitize");
    $input = $this->data["name"];
    $result = Sanitize::stripAll($input);
    $this->set("result",$result);
}

}

また、その下の行の「public $autoLayout」をtrueに変更します。標準ではtrueになっているので、記述する必要はありませんが、もし「public $autoLayout = false;」となっていた場合は変更してください。

/app/views/layouts/sample.ctpのコードを追加

上の手順で「/app/views/layouts/sample.ctp」を追加したので、その中身を書きます。





フォームの入力サンプル




これで、ヘッダやフッタ部分が共通化されました。上記ソースにある

の箇所に、index.ctp、result.ctpに表示するコードを記述します。

/app/views/sample/index.ctp

「/app/views/layouts/sample.ctp」を追加した事により、index.ctp、result.ctpのコードが減りました。以下のような感じ。

フォームの入力サンプル


create(null, array('type'=>'post','action'=>'result')); ?>
名前: input('name', array('type'=>'text', 'div'=>false, 'label'=>false)); ?>
end('送信'); ?>

/app/views/sample/result.ctp

「/app/views/layouts/sample.ctp」を追加した事により、index.ctp、result.ctpのコードが減りました。以下のような感じ。

【結果】フォームの入力サンプル


あなたは

と入力しました。

入力画面へ戻る

まとめ

前回の記事「CakePHPで入力した値を取得するだけのプログラム」と表示結果は同じですが、view部分がまとまることで、訂正が入った時に修正する箇所が減りました。