![]() |
実践編 HTML_QuickFormとSmartyを使ってみてどうよ? | ご意見・ご感想 |
| たぬき | : | はー、勉強会から数ヵ月・・・HTML_QuickFormとSmartyを使っていろいろなフォームを作ったなー。 便利やねんけどなー。でもちょっとかゆいところに手が届かんとこもあるなー。 いろいろ作ってみたけど簡単にわかりやすくまとめて、どんなとこが苦労したかちょっと残しとこっと。 |
| 先生 | : | おっ、偉いなー、真面目やなー、それでこそたぬきくんや! |
| たぬき | : | どないな褒め方やねん。ようわからんわ。そんなん無視してまとめよっと。 |
| 先生 | : | そんなんゆうてええんかなー。先生もずっと遊んでたわけちゃうで。一般的に良く使う機能をこんな風にまとめたんやでー。わかりやすいやろー。 |
| たぬき | : | おーすごい。わかりやすいやん、いやーたまにはええことするやん。 |
| 先生 | : | おいおい、たまにはって・・・ |
| たぬき | : | ほんじゃこれ使って、まとめてみよー。 |
| たぬき | : | 先生がまとめてくれたんは、コードの細かい部分やから、ぼくは全体的にどう作るかとちょっとした留意点をまとめよ。 |
| たぬき | : | まずはHTML_QuickForm使ってフォームをつくるときは
いろいろ作ったけど、まだ慣れん頃はこの流れが頭に入ってなくって・・・。 前作ったものを久々にみたときに、どこでなにやってるか思いだせんでえらい苦労したな。 流れとどこで何をしているか、しっかり決めて把握しとかな保守するときちょっと大変やと思ったわ。 でも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集のページを作ったでー。さーどんどん増やしていくでー。 (暇があったらねー・・・) |