[PHP-users 23532]HTML_QuickForm_Controllerでの確認画面

bananaire bananaire @ yahoo.co.jp
2004年 11月 2日 (火) 01:11:17 JST


お世話になっております、bananaireです。

HTML_QuickForm_Controller を使ってみてハマってしまったのでご教授願えれば
と思います。

やりたい事は簡単で、
入力画面 => 確認画面 => 登録
といった画面遷移を作りたいのです。

http://elf.no-ip.org/blog/index.php?categ=8&year=2003&month=12&id=1072764508
などを見ながらやってみたのですが、1ページ目から2ページ目に行けません。
しかも入力エラーになるとフォームが2重に出てしまう始末...

何か根本的に間違っている気がするので、だめな部分に気づいた方はツッコミを
入れていただけると助かります。

試したのは以下のコードです。 よろしくお願い致します。

---------- test.php ----------
<?php

require_once 'HTML/QuickForm/Controller.php';
require_once 'HTML/QuickForm/Action/Next.php';
require_once 'HTML/QuickForm/Action/Back.php';
require_once 'HTML/QuickForm/Action/Jump.php';
require_once 'HTML/QuickForm/Action/Display.php';

define("USER_FILE", '/tmp/user.txt');

class AllPages extends HTML_QuickForm_Page{
    var $freeze = false;
    function buildPage1 (){
        $this->addElement('text','name', '名前', array('size'=>20, 'maxlength'=>50));
        $this->addRule('name', 'お名前を入力して下さい。', 'required');
    }
}

class InputPage extends AllPages{
    function buildForm(){
        $this->addElement('header',     null, '入力画面');
        $this->buildPage1();
        $this->addElement('submit',     $this->getButtonName('next'), '確認');
    }
}

class ConfirmPage extends AllPages{
    function buildForm(){
        $this->freeze = true;
        $this->addElement('header',     null, '確認画面');
        $this->buildPage1();
        $this->addElement('submit',     $this->getButtonName('next'), '登録');
    }
}


class ActionProcess extends HTML_QuickForm_Action{
    function perform(&$page, $actionName)
    {
        $post = $page->exportValues();

        $fp = fopen( USER_FILE, "a" );
        fwrite( $fp, $post['name']. "\n");
        fclose( $fp );

        echo "登録しました。";
    }
}

$wizard =& new HTML_QuickForm_Controller('Wizard');
$wizard->addPage(new InputPage('page1'));
$wizard->addPage(new ConfirmPage('page2'));

$wizard->addAction('display', new HTML_QuickForm_Action_Display());
$wizard->addAction('next', new HTML_QuickForm_Action_Next());
$wizard->addAction('back', new HTML_QuickForm_Action_Back());
$wizard->addAction('jump', new HTML_QuickForm_Action_Jump());


$wizard->addAction('process', new ActionProcess());
$wizard->run();
?>

---------- test.php ----------


__________________________________
for your loved one
http://pr.mail.yahoo.co.jp/pinkribbon/



PHP-users メーリングリストの案内