3.5.3.2 フロー制御

3.5.3.2.1 redirect

redirect(string $url, integer $status, boolean $exit)

もっともよく使用するフロー制御のメソッドは、redirect() です。このメソッドは、第1引数に CakePHP 流の相対 URL を指定します。 ユーザーが首尾よく注文したとき、領収書の画面にリダイレクトさせたいかもしれません。

<?php
	
function placeOrder() {

    //ここは注文完了のロジック

    if($success) {
        $this->redirect('/orders/thanks');
    } else {
        $this->redirect('/orders/confirm');
    }
}

?>
  1. <?php
  2. function placeOrder() {
  3. //ここは注文完了のロジック
  4. if($success) {
  5. $this->redirect('/orders/thanks');
  6. } else {
  7. $this->redirect('/orders/confirm');
  8. }
  9. }
  10. ?>

redirect() の第2引数は、リダイレクトの際の HTTP ステータスコードを指定します。リダイレクトの状況によっては、 301 (永久的な移転)や 303 (see other) を指定したくなるかもしれません。

このメソッドは、第3引数に false をセットしなければ、リダイレクト後に exit() が実行されます。

3.5.3.2.2 flash

flash(string $message, string $url, integer $pause)
  1. flash(string $message, string $url, integer $pause)

flash() メソッドも、ページ遷移に使用します。 flash() メソッドでは、別の URL へ移る前にメッセージを表示するところが redirect() メソッドと異なります。

第1引数は、表示するメッセージです。そして、第2引数は、CakePHP 流の相対 URL です。CakePHP は、$pause (第3引数) 秒間、メッセージを表示ます。

ページ遷移後のメッセージ表示については、SessionComponent クラスの setFlash() メソッドを参照ください。