実践編 HTML_QuickFormとSmartyを使ってみてどうよ? ご意見・ご感想
たぬき はー、勉強会から数ヵ月・・・HTML_QuickFormとSmartyを使っていろいろなフォームを作ったなー。
便利やねんけどなー。でもちょっとかゆいところに手が届かんとこもあるなー。
いろいろ作ってみたけど簡単にわかりやすくまとめて、どんなとこが苦労したかちょっと残しとこっと。
先生 おっ、偉いなー、真面目やなー、それでこそたぬきくんや!
たぬき どないな褒め方やねん。ようわからんわ。そんなん無視してまとめよっと。
先生 そんなんゆうてええんかなー。先生もずっと遊んでたわけちゃうで。一般的に良く使う機能をこんな風にまとめたんやでー。わかりやすいやろー。
たぬき おーすごい。わかりやすいやん、いやーたまにはええことするやん。
先生 おいおい、たまにはって・・・
たぬき ほんじゃこれ使って、まとめてみよー。
たぬき 先生がまとめてくれたんは、コードの細かい部分やから、ぼくは全体的にどう作るかとちょっとした留意点をまとめよ。
たぬき まずはHTML_QuickForm使ってフォームをつくるときは
  1. フォームを作って (フォームオブジェクトのインスタンス生成
  2. アイテム定義して (要素定義
  3. チェック内容書いて (要素検証
  4. 値取って業務処理して (要素取得
  5. 表示っと (フォーム出力、Smartyレンダラ処理
てこんな流れで作るってやっとわかって来たなー。

いろいろ作ったけど、まだ慣れん頃はこの流れが頭に入ってなくって・・・。
前作ったものを久々にみたときに、どこでなにやってるか思いだせんでえらい苦労したな。
流れとどこで何をしているか、しっかり決めて把握しとかな保守するときちょっと大変やと思ったわ。
でもHTML_QuickFormって調べれば調べる程、細かいことがいろいろ出来るみたいやな。
これもまだ後で見て理解できるレベルで適度に徐々に取りこんでいかんと後が大変やろーなー。
たぬき 感想ばっかりじゃなくって、ちょっとしたノウハウも残しとこ。

たぬき HTML_QuickFormってvalidate(チェック)が結構最初からいろいろ用意されてて重宝するんやけど、自分なりのチェックを入れたいときどうしたかを書いとこ。
例として郵便番号チェック!!
数字3桁とハイフンが必ず入って数字4桁のチェック。 まず、ルールを追加するロジックを書いて。
001:  // QuickFormのチェック追加
002:  require_once "HTML/QuickForm/Rule.php";
003:  
004:  class QF_Check_Zip extends HTML_QuickForm_Rule {
005:      function validate($value) {
006:          if (ereg("[0-9]{3}-[0-9]{4}$",$value) ) {
007:              return true;
008:          } else {
009:              return false;
010:          }
011:      }
012:  }
図1.ルールのロジック

たぬき 次にフォームのインスタンスに登録っと、第一引数がルール名で第3引数がクラス名。
001:          $this->_form->registerRule('zip_check', null, 'QF_Check_Zip');
図2.ルール追加

たぬき 次にaddRuleのところ。第3引数にさっき定義したルール名を入れる。
001:          $this->_form->addRule('txtZip', '郵便番号不正', 'zip_check');
図3.addRule部分

たぬき 次はSmartyテンプレートでJavaScriptとか使うとき、標準のデリミタが{}なんでエラーが出るんやねー。
そんなときには、JavaScriptの部分なんかを{literal}と{/literal}で囲ってやれば{}を無視するようになるんやね。

もしくは、デリミタ自体を変えてやるっていう手もあるね。
001:  class Smarty_Setup extends Smarty {
002:     function Smarty_Setup()
003:     {
004:          $this->Smarty();
005:                                                                                  
006:          $this->template_dir = '/tanuki/templates/';
007:          $this->compile_dir = '/tanuki/templates_c/';
008:          $this->config_dir = '/tanuki/configs/';
009:          $this->cache_dir = '/tanuki/cache/';
010:                                                                                  
011:          $this->caching = false;
012:          $this->left_delimiter = '<!--{';
013:          $this->right_delimiter = '}-->';
014:          $this->assign('app_name','tanuki');
015:     }
016:  }
017:  ?>
図4.デリミタ変更

たぬき うーん、まだまだ書きたいこといっぱいあるねんけどなー。ちょっとずつまとめていこうっと。
すぐに追加できるようにTIPS集のページを作ったでー。さーどんどん増やしていくでー。
(暇があったらねー・・・)
インフォメーションへ戻る 第1回 PHPのコードとHTMLタグ コラム
  第2回 HTML_QuickFormを使ってみよう
  第3回 HTML_QuickFormを使ってみよう(パート2) HTML_QuickForm Memo
  第4回 Smartyを使ってみよう HTML_QuickForm Menu
  第5回 HTML_QuickFormとSmartyを使ってみよう HTML_QuickForm Smarty Tips
  第6回 HTML_QuickFormとSmartyを使ってみよう(パート2) Mojavi Memo
  第7回 実践編 HTML_QuickFormとSmartyを使ってみてどうよ? Ajax Memo
  第8回 HTML_QuickForm_Controller大好き!
  第9回 Mojaviのまとめ
  第10回 Ajax使ってみました
  第11回 PHPEclipse開発環境設定
  第12回 Eclipse+PHPIDEインストール記
  第13回目 PHPIDEによるデバック
  第14回目 Selenium IDEを使ってみました
  第15回目 PDT(旧 PHPIDE)のインストール、デバック