Zend_Form
PEAR::HTML_QuickFormっぽい。DecoratorとかView_Helperとかあってますます複雑に…。結局柔軟なデザインしようと思ったらテンプレートにべた書きするのが一番。
Element生成が設定ファイルからできるのは楽だなぁ。
Decoratorとは?
フォーム自身は[add|get|set|remove]Decoratorで、要素はsetElementDecoratorsで指定する。
デコレーターは登録した順に実行される。
ViewHelperは要素部分をZend_View_Helperを使って出力するデコレーター。例えばtextエレメントならば、HTMLのinput要素が出力される。
同じDecoratorは複数登録できない!?
テーブルレイアウトしようとして、次のようにしたけど動かない。
>|php|
<?php
$element->setDecorators(array(
'ViewHelper',
'Description',
'Errors',
'HtmlTag', array('tag' => 'td'),
'Label', array('tag' => 'td'),
'HtmlTag', array('tag' => 'tr'),
));
?>
||<
こうするとinput周りのtdが消去されてしまう。
どうやら同じデコレーターを複数登録すると、先に登録した方は消されてしまうようだ。
で、どうやら配列で囲むといいらしい。
http://devzone.zend.com/article/3450-decorators-with-zend_form
>|php|
<?php
$element->setDecorators(array(
'ViewHelper',
'Errors',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
array('Label', array('tag' => 'td'),
array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
));
?>
||<
getValuesで値を取得したくない要素を設定する
setIgnoreする
>|php|
<?php
$e = $form->createElement('hidden', 'hoge')
->setIgnore(true);
$form->addElement($e);
?>
||<
履歴
- 第 11 版akkun_choi2008-10-23 00:41:12
- 第 10 版akkun_choi2008-10-23 00:31:06
- 第 9 版akkun_choi2008-10-23 00:00:53
- 第 8 版akkun_choi2008-10-22 23:58:38
- 第 7 版akkun_choi2008-10-22 23:55:38
- 第 6 版akkun_choi2008-10-22 23:49:05
- 第 5 版akkun_choi2008-10-22 23:48:32
- 第 4 版akkun_choi2008-10-22 23:39:41
- 第 3 版akkun_choi2008-08-31 14:37:16
- 第 2 版akkun_choi2008-08-22 00:35:17
- 第 1 版akkun_choi2008-08-13 22:45:54