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でリダイレクトをする際の参考になれば幸いです。