CakePHP一覧

【CakePHP】リダイレクトで別ページに遷移する方法

CakePHPを使用していて別ページに遷移する必要があることがあると思います。

今回の記事では、CakePHPを使用して別ページに遷移する方法について紹介します。

CakePHP3系

CakePHP3系では、下記のようにリダイレクトの処理を行います。
returnの処理を忘れないようにしてください。

//コントローラとメソッドを指定
return $this->redirect(
            ['controller' => 'Orders', 'action' => 'thanks']
       );
//相対URLを指定
return $this->redirect('/orders/thanks');
//外部サイトへのリダイレクト
return $this->redirect('http://www.example.com');
//アクションに変数を指定
return $this->redirect(['action' => 'edit', $id]);
//リファラーを指定
return $this->redirect($this->referer());
//クエリ文字列とハッシュを使う例
return $this->redirect([
    'controller' => 'Orders',
    'action' => 'confirm',
    '?' => [
        'product' => 'pizza',
        'quantity' => 5
    ],
    '#' => 'top'
]);

CakePHP2系

CakePHP2系でのリダイレクトの処理は下記のようにやります。
1系と似ているのですが、リダイレクトの処理の時にreturnで戻す必要があります。

//コントローラとメソッドを指定
return $this->redirect(
            array('controller' => 'orders', 'action' => 'thanks')
        );
//相対アドレスを指定
return $this->redirect('/orders/thanks');
//外部サイトへのリダイレクト
return $this->redirect('http://www.example.com');
//アクションに変数を設定
return $this->redirect(array('action' => 'edit', $id));
//リファラーを指定
return $this->redirect($this->referer());
//http://www.example.com/orders/confirm/product:pizza/quantity:5 のようなURLにリダイレクト
return $this->redirect(array(
    'controller' => 'orders',
    'action' => 'confirm',
    'product' => 'pizza',
    'quantity' => 5)
);
//クエリ文字列とハッシュをしよう
$this->redirect(array(
    'controller' => 'orders',
    'action' => 'confirm',
    '?' => array(
        'product' => 'pizza',
        'quantity' => 5
    ),
    '#' => 'top')
);

CakePHP1系

cakePHP1系の場合は、returnをする必要がないです。

//相対URLを指定
$this->redirect('/orders/thanks')
//外部サイトへのリダイレクト
$this->redirect('http://www.example.com');
//アクションへ変数を渡す
$this->redirect(array('action' => 'edit', $id));
//リファラーを指定
$this->redirect($this->referer());

まとめ

CakePHP1系・2系・3系でリダイレクトの方法というのは若干違います。

それぞれの環境を確認して、CakePHPでリダイレクトをする際の参考になれば幸いです。