前回、「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部分がまとまることで、訂正が入った時に修正する箇所が減りました。