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)

別のコントローラーのアクションを実行し結果を利用出来ます。ビューの中でも使用出来るメソッドです。