• []
  • []
  •  
  • del.icio.us 
  •  
  • Yahoo!֥åޡϿ 

symfony確認画面を作る

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

symfonyバリデーションへ戻る

symfony確認画面を作る 概要

確認画面の目的は
[サブミットするとその情報は変更できませんよ]という最後通告。

今回の場合だと、
投稿ボタンを押した場合、
サイト運営者側にメールとして送信される。
その内容は完了ボタンを押した時点で確定するわけで、
内容の変更は出来ない。
なので確認画面が必要になる。

コミュニティではあまり必要ないが、
ECでは必須となる。

symfony確認画面を作る

確認ページの詳細仕様は

項目フォーム名属性詳細
名前nameinput hidden必須入力
メールアドレスmailinput hidden必須入力、メールアドレス形式。
問い合わせ内容inquiryinput hidden必須入力
修正fixinput submit -
投稿 - input submit -

バリデータは投稿ページで使用したモノをそのまま使う。
その方がメンテナンスしやすいからだ。
投稿先をDoに集約させるのはそのためだ。

symfony確認画面を作る 画面追加

画面を増やすので、
新たにアクションとビューを追加する。

apps/myapp/modules/inquiry/actions/actions.class.php

class inquiryActions extends sfActions
{
  /**
   * Executes index action
   *
   */
  public function executeIndex()
  {
  }
 
  public function executeEnd()
  {
  }
 
  public function executeConfirm()
  {
  }
 
  public function executeDo()
  {
      switch( $this->getRequestParameter("act") )
      {
        case "index":
            $this->forward("inquiry", "confirm");
            break;
        case "confirm":
            if( $this->getRequestParameter("commit") != "" )
                $this->redirect("/inquiry/end");
            else
                $this->forward("inquiry", "index");
            break;
        default:
            $this->forward("inquiry", "index");
            break;
      }
  }
 
  public function handleErrorDo()
  {
    $this->forward('inquiry', 'index');
  }
}

apps/myapp/modules/inquiry/templates/confirmSuccess.php

<div class="sfTContainer">
  <a href="http://www.symfony-project.com/">
    <img alt="" class="sfTLogo" src="/sf/sf_default/images/sfTLogo.png"
     height="39" width="186" /></a>  
  <div class="sfTMessageContainer sfTAlert"> 
    <div class="sfTMessageWrap">
      <h1><?= link_to('お問い合わせフォーム', '@homepage') ?></h1>
      <h5>簡単なお問い合わせフォーム</h5>
 
     </div>
  </div>
  <dl class="sfTMessageInfo">
    <dt>お問い合わせ</dt>
    <dd>
 
<?php use_helper('Validation') ?>         
<?= form_tag('inquiry/do') ?>
  <?= input_hidden_tag('act', 'confirm') ?>
  名前:<?= $sf_params->get('name') ?><br />
    <?= input_hidden_tag('name', $sf_params->get('name')) ?><br />
  メールアドレス:<?= $sf_params->get('mail') ?><br />
    <?= input_hidden_tag('mail', $sf_params->get('mail')) ?><br />
  問い合わせ内容:<?= $sf_params->get('inquiry') ?><br />
    <?= input_hidden_tag('inquiry', $sf_params->get('inquiry')) ?><br />
<?= submit_tag('修正', array('name' => 'fix')) ?>&nbsp;<?= submit_tag('投稿') ?>
</form>
 
     </dd>
  </dl>
 
</div>

確認画面
確認画面

symfony確認画面を作る テスト追加

ここで追加した画面をポチポチしてハイ終わりというのはNG。
追加した分は必ずテストをし、
問題が起こらないかどうかをチェックする。
そうすることでバグの少ないシステムになっていく。

テストはsymfonyバリデーションの時に作成したモノと置き換えるのではなく、
確認画面の分を追加する。
画面の遷移先が多少変わるので、
その部分は別途調整する。

apps/myapp/modules/inquiry/templates/confirmSuccess.php

<?php
include(dirname(__FILE__).'/../../bootstrap/functional.php');
 
・・・・
 
// page transrate
$browser->initialize();
$browser->get("/inquiry/index");
$browser  ->setField("act", 'index' )
  ->setField("name", 'd5ccc1' )
  ->setField("mail", "dozo@matrix.jp")
  ->setField("inquiry", '7e29b5' )
;
$browser
    ->click("確認")
    ->click("修正")
    ->isForwardedTo("inquiry", "index");
 
$browser
    ->click("確認")
    ->click("投稿")
    ->isRedirected()
    ->followRedirect()
    ->isRequestParameter('module', 'inquiry')
    ->isRequestParameter('action', 'end')
;

synfony メール送信へ続く


framework/symfony/confirm.txt · 最終更新: 2007/06/28 01:30 by dozo