cakephp3で会員登録機能を作っています。
それで以下のようなURLにしたいと思っていますが、うまくいきません。
どうやれば想定しているURLになるか、コントローラーの書き方などご教示していただけないでしょうか。
■こうしたいと思っているURL
入力画面:
http://hoge.jp/hoge/
入力画面にてエラーチェックに引っかかった場合:
http://hoge.jp/hoge/
確認画面:
http://hoge.jp/hoge/confirm/
確認画面から入力画面に戻ったとき:
http://hoge.jp/hoge/
完了画面:
http://hoge.jp/hoge/complete/
■現状実装中のURL
入力画面:
http://hoge.jp/hoge/
入力画面にてエラーチェックに引っかかった場合(なぜか最後の/がない):
http://hoge.jp/hoge
確認画面:
http://hoge.jp/hoge/
確認画面から入力画面に戻ったとき:
http://hoge.jp/hoge/confirm/
完了画面:
http://hoge.jp/hoge/complete/
以下、現在のコントローラー側の処理です。
※細かい処理は省いています
function名がURLになるのはわかっているので、今の書き方だと現在のURLになるのは当たり前なのですが、こうしたいと思っているURLにしたいのです。
■コントローラー(HogeController.php)
class HogeController extends AppController { public function index() { // 確認画面表示 if ($this->request->is('post')) { // Formを呼び出す $form_entity = new HogeCheckForm(); // POST値をセッションに設定 〜〜中略 // バリデーションチェック if ($form_entity->execute($this->request->getData())) { $this->render('confirm'); // 入力エラーがあった場合 } else { $this->render('index'); } // 初期表示時 } else { // セッションを破棄する $session = $this->request->getSession(); $session->destroy(); } } /** * 登録 */ public function complete() { // 入力画面に戻る場合 if ($this->request->getData('back')) { return $this->redirect(['action' => 'index']); } elseif ($this->request->getData('add')) { // 登録処理 〜〜中略 } } }
completeは確認画面のアクションで、submitボタンにnameをつけて、戻るボタン(back)と登録ボタン(add)で処理を振り分けるようにしています。
あなたの回答
tips
プレビュー