test
CakePHP Note
コントローラのメソッド
UPDATE:2009.02.06
ビューとの連携
コントローラからビューへデータを渡します。
- set(string $var, mixed $value)
- set(array $data)
$this->set(‘message’, “Hello”);
$this->set(‘message2’, “World”);
これで$messageと$message2がビューの中で利用出来るようになります。
配列でまとめてビューへデータを渡す事も出来ます。
(*変数名はアンダースコアが取り除かれ先頭小文字のcamelCasedに変換されます。Inflector::variable)
$this->set(array('message'=>'Hello','message2'=>'World'));
$message='Hello';
$message2='World';
$this->set(compact('message','message2'));
ビューのフォームとの連携
コントローラからフォームへ。$this->dataにデータをセットするとフォームにもセットされます。
$this->data = $this->Post->read(null, $id);
フォームからコントローラへ。フォームから送信されたデータは$this->dataに入ってきます。
$this->Post->save($this->data);
ビューの変更
デフォルト以外のビューを使う時にはrenderを使用します。
- render(string $action, string $layout, string $file)
レイアウトだけを変更する場合は、使用したいレイアウトを$layout属性に設定します。
$this->laytout = 'myLayout.ctp';
フロー制御
- redirect(mixed $url, integer $status, boolean $exit)
$urlへリダイレクトさせます。'/users/view/5'のようなCakePHPスタイルのURLか配列で指定します。配列の場合は'controller','action','plugin'のキーを使用できます。$exitをtrueにすればexit()も呼ばれます。
- flash(string $message, string $url, integer $pause)
一旦$messageを表示する画面を表示し、$urlへ進ませます。
(flashのメッセージのみ表示させリダイレクトさせたくない場合は、SessionコンポーネントのsetFlashメソッドを使用します。)
コールバック
コールバック関数が用意されていますので、必要に応じて利用します。
- beforeFilter()
アクションを実行する直前に呼ばれます。
- beforeRender()
アクションを実行後、レンダリングする直前に呼ばれます。
- afterFilter()
アクションを実行し終わった後に呼ばれます。
- afterRender()
レンダリングした後に呼ばれます。
その他のメソッド
- constructClasses()
- referrer()
- disableCache()
- postConditions(array $data, mixed $op, string $bool, boolean $exclusive)
- cleanUpFields(string $modelClass = null)
- paginate($object = null, $scope = array(), $whitelist = array())
ページネーションのページをご覧下さい
- requestAction(string $url, array $options)
別のコントローラーのアクションを実行し結果を利用出来ます。ビューの中でも使用出来るメソッドです。
