[PHP-users 24456] QuickForm のレンダラの利用について

Tomoya Hayashi tomoya128 @ yahoo.co.jp
2005年 2月 8日 (火) 15:17:13 JST


お世話になります。ハヤシと申します。

QuickFormを利用して、登録フォームを作成していましたが
addRuleメソッドで各エラーチェックを追加した後、フォーム
のデザインを変更したく、setElementTemplateメソッドを
利用して、デザインを変更したのですが、いままでaddRule
メソッドで利用していた、サーバーサイドのエラー処理が
されなくなりました。クライアントサイドのエラーチェック
は利用できます。

addRlueメソッドの最後の引数のcleantの設定だからで
しょうか?マニュアルを見ると、serverとも設定できそう
な気がしますが、私の読解力がなく理解できませんでした。し
かし、レンダラを利用する前は、「cleant」と引数を指定
しても、サーバーサイドのエラー処理が行われていました。

PHP初心者の初歩的な質問で申し訳ございませんが、
QuickFormのレンダラ機能に詳しい方、ご教授お願い
致します。

<テストソース>
<?php

require_once "HTML/QuickForm.php";


//HTML_QuickFormを生成
$form =& new HTML_QuickForm( "test_form",
"POST","",null,null,true);
$form->addElement("header", "title", "ヘッダータイトル");

//ニックネーム
$form->addElement("text","nick_name","ニックネーム:",array('size'=>40));

//性別
$sex[] =& $form->createElement( "radio",NULL,NULL, "男性",
"1");
$sex[] =& $form->createElement( "radio",NULL,NULL, "女性",
"2");
$form->addGroup( $sex, "sex", "性別:");

//年齢
$age[] =& $form->createElement( "radio",NULL,NULL,"10代",
"1");
$age[] =& $form->createElement( "radio",NULL,NULL,"20代",
"2");
$age[] =& $form->createElement( "radio",NULL,NULL,"30代",
"3");
$age[] =& $form->createElement( "radio",NULL,NULL,"40代",
"4");
$age[] =& $form->createElement( "radio",NULL,NULL,"50代",
"5");
$age[] =& $form->createElement( "radio",NULL,NULL,"60代
以上", "6");
$form->addGroup( $age, "age", "年齢:");

//職業
$job[] =& $form->createElement( "radio",NULL,NULL,"学生",
"1");
$job[] =& $form->createElement( "radio",NULL,NULL,"会社",
"2");
$job[] =& $form->createElement( "radio",NULL,NULL,"自営
業", "3");
$job[] =& $form->createElement( "radio",NULL,NULL,"主婦",
"4");
$job[] =& $form->createElement( "radio",NULL,NULL,"フリ
ーター", "5");
$job[] =& $form->createElement( "radio",NULL,NULL,"無職",
"6");
$form->addGroup( $job,"job","職業:");

//メールアドレス
$form->addElement( "text", "mail_address", "メールアドレ
ス:",array('size'=>40));

//再度メーアドレス
$form->addElement( "text", "mail_address2", "メールアド
レス確認:",array('size'=>40));


//送信、セットボタンの生成
$botton[] =& $form->createElement("submit","send","確認
画面へ");
$botton[] =& $form->createElement("reset","clear","リセ
ット");
$form->addGroup( $botton, "btn", "");

//全要素にtrimフィルターを適用
$form->applyFilter('__ALL__','trim');
$form->applyFilter('__ALL__','htmlentities');
$form->applyFilter('__ALL__','addslashes');
$form->applyFilter('__ALL__','escapeshellcmd');
        
        
//空文字チェック
$form->addRule( "nick_name", "ニックネームを入力して下さ
い。", "required", NULL, "client");
$form->addRule( "sex", "性別が選択されていません",
"required", NULL, "client");
$form->addRule( "age", "年齢が選択されていません",
"required", NULL, "client");
$form->addRule( "job", "職業が選択されていません",
"required", NULL, "client");
$form->addRule( "mail_address", "メールアドレスを入力し
て下さい。", "required", NULL, "client");
$form->addRule( "mail_address2", "メールアドレス確認を入
力して下さい。", "required", NULL, "client");

//内容チェック
$form->addRule( "nick_name", "ニックネームは全角で1から10
文字までです。", "rangelength", array(1,10), "clinet");
$form->addRule( "mail_address", "メールアドレスは半角で1
から50文字までです。", "rangelength", array(1,50),
"client");
$form->addRule( "mail_address2", "メールアドレスは半角で1
から50文字までです。", "rangelength", array(1,50),
"client");
$form->addRule( "mail_address", "メールアドレスとして不
当な入力です。", "email", NULL, "client");
$form->addRule( "mail_address2", "メールアドレスとして不
当な入力です。", "email", NULL, "client");
$form->addRule( array("mail_address","mail_address2"),"
メールアドレスとメールアドレス確認が一致しません。",
"compare", NULL, "client");



//フォームデザインの変更
$renderer =& $form->defaultRenderer();

//エラーメッセージを日本語設定に変更
$form->setRequiredNote("(※)ご質問事項にすべて回答後、
確認画面へとお進み下さい。");
$form->setJsWarnings("以下で入力エラーがあります。\n","\n
再度、入力項目を確認して下さい");

$renderer->setElementTemplate("<tr><td
align=\"right\"><b>{label}</b></td><td
align=\"left\">{element}
(例)XXXXXXXX</td></tr>","nick_name");
$renderer->setElementTemplate("<tr><td
align=\"right\"><b>{label}</b></td><td
align=\"left\">{element}
(例)XXXXXXXX</td></tr>","sex");
$renderer->setElementTemplate("<tr><td
align=\"right\"><b>{label}</b></td><td
align=\"left\">{element}
(例)XXXXXXXX</td></tr>","age");
$renderer->setElementTemplate("<tr><td
align=\"right\"><b>{label}</b></td><td
align=\"left\">{element}
(例)XXXXXXXX</td></tr>","job");
$renderer->setElementTemplate("<tr><td
align=\"right\"><b>{label}</b></td><td
align=\"left\">{element}
(例)XXXXXXXX</td></tr>","mail_address");
$renderer->setElementTemplate("<tr><td
align=\"right\"><b>{label}</b></td><td
align=\"left\">{element}
(例)XXXXXXXX</td></tr>","mail_address2");

$form->accept($renderer);

//出力
if($form->validate()){
    $form->freeze();
}else{
    $form->display();
}

?>


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Tomoya Hayashi
Tomoya128 @ yahoo.co.jp
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

__________________________________
Let's Celebrate Together!
Yahoo! JAPAN
http://pr.mail.yahoo.co.jp/so2005/



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