• このエントリーをはてなブックマークに追加
CakePHPでページ間で値を受け渡す方法
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

CakePHPでページ間で値を受け渡す方法

2013-04-28 09:15
    ●概要
    フォーム入力処理において、
    ・フォーム入力が正常に行われた際に表示するページ
    ・フォーム入力がエラー(未入力など)の際に表示するページ
    を切り替える際、エラー理由などのパラメータを次ページに渡す方法


    ●入力画面
    コントローラ:
    // 拡販パートナー用の初回登録画面(お名前とお名前フリガナを入力する)入力画面
      public function first_time_registration_for_partners_input_name() {
    $this->set("title_for_layout","拡販パートナー様 - 新規登録 - お名前入力");

    } // end of function

    ビュー: ファイル名 first_time_registration_for_partners_input_name.ctp
    <h1>名前を登録する</h1>
    <p>本名をフルネームで入力してください</p>
      <?php echo $this->Form->create(false,array('type'=>'post','action'=>'./first_time_registration_for_partners_input_name_confirm')); /* CakePHP ver2.1 以降では、null ではなく false を設定する。*/ ?>
    <h1>お名前</h1><?php echo $this->Form->text('name'); ?>
    <br/><br/><p>例)大和 賢一郎</p><hr><br/><br/>
    <h1>お名前ふりがな</h1><?php echo $this->Form->text('name_kana'); ?>
    <br/><br/><p>例)やまと けんいちろう</p><hr><br/><br/>
        <?php echo $this->Form->end(" 確認画面へ進む "); ?>


    ●入力完了(正常)画面
    コントローラ:
    // 拡販パートナー用の初回登録画面(お名前とお名前フリガナを入力する)確認処理
    public function first_time_registration_for_partners_input_name_confirm(){

    $partner_id = "12345";

    $name = $this -> data["name"]; // お名前
    $name = strip_tags($name); // HTMLタグを除外する
    $this -> set("name", Sanitize::stripAll($name));

    $name_kana = $this -> data["name_kana"]; // お名前フリガナ
    $name_kana = strip_tags($name_kana); // HTMLタグを除外する
    $this -> set("name_kana", Sanitize::stripAll($name_kana));

    $reason_for_error = ""; // エラー理由
    $is_error = false; // エラー発生時は true を設定する。
    if($name == null){
    $is_error = true;
    $reason_for_error .= "お名前が入力されていません。";
    }

    if($name_kana == null){
    $is_error = true;
    $reason_for_error .= "お名前ふりがなが入力されていません。";
    }

    if($is_error){
    $this->redirect("./first_time_registration_for_partners_input_name_error/" . "$reason_for_error/" . "$partner_id/");
    }

    } //end of function

    ビュー: ファイル名 first_time_registration_for_partners_input_name_confirm.ctp
    <h1>I am first_time_registration_for_partners_input_name_confirm.ctp</h1>
    <p>text1: <?php echo $name; ?></p>
    <p>text2: <?php echo $name_kana; ?></p>

    ●入力エラー画面
    コントローラ:
    // 拡販パートナー用の初回登録画面(お名前とお名前フリガナを入力する)入力画面でエラー発生時に表示する画面
      public function first_time_registration_for_partners_input_name_error($reason_for_error,$partner_id) {
    $this->set("title_for_layout","拡販パートナー様 - 新規登録 - お名前入力 - エラー");
    $this->set("reason_for_error",$reason_for_error);
    $this->set("partner_id",$partner_id);
    } // end of function

    ビュー: ファイル名 first_time_registration_for_partners_input_name_error.ctp
    <?php echo $partner_id; ?>
    <?php echo $reason_for_error; ?>
    <h1>エラーが発生しました。i am first_time_registration_for_partners_input_name_confirm_error.ctp</h1>
    <a href="./first_time_registration_for_partners_input_name">再入力する</a>

    ●解説
    確認処理において、入力値がnullかどうかを調べ、nullの場合はエラー処理にリダイレクトさせている。
    その際、エラー理由と、パラメータ(この例では$partner_id)を同時に渡している。
    受け取ったエラー処理側では、受け取った値を $thisにsetして、ビューで表示させている。

    表示例

    チャンネル会員ならもっと楽しめる!
    • 会員限定の新着記事が読み放題!※1
    • 動画や生放送などの追加コンテンツが見放題!※2
      • ※1、入会月以降の記事が対象になります。
      • ※2、チャンネルによって、見放題になるコンテンツは異なります。
    ブログイメージ
    東京ウェブ制作ブロマガ
    更新頻度: 不定期
    最終更新日:
    チャンネル月額: ¥550 (税込)

    チャンネルに入会して購読

    コメントを書く
    コメントをするにはログインして下さい。