[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 メーリングリストの案内