Zend_Form を使ってみる
Zend Framework 1.5 からは、先日紹介した Zend_Layout のほかに、Zend_Form が追加されました。テンプレートファイル(.phtml)に以下のように記述することで、面倒なHTMLエスケープも込みでフォームを作成してくれます。
<html> <boby> <?= $this->formText('text1', 'こんにちわ') ?><br> <?= $this->formTextarea('text2', 'こんにちわ', Array('rows' => 3, 'cols' => 10)) ?><br> <?= $this->formPassword('pass1') ?><br> <?= $this->formSelect('select1', 2, null, Array('' => '', '1' => 'あ', '2' => 'い')) ?><br> <?= $this->formRadio('radio1', 2, null, Array('1' => 'う', '2' => 'え')) ?><br> <?= $this->formCheckbox('check1', '56789') ?> かきくけこ<br> <?= $this->formButton('button1', ' 押すのじゃ ') ?><br> <?= $this->formHidden('hidden1', 'あいうえお') ?><br> </boby> </html>
実際には以下のように変換されます。
<html> <boby> <input type="text" name="text1" id="text1" value="こんにちわ"><br> <textarea name="text2" id="text2" rows="3" cols="10">こんにちわ</textarea><br> <input type="password" name="pass1" id="pass1" value=""><br> <select name="select1" id="select1"> <option value="" label=""></option> <option value="1" label="あ">あ</option> <option value="2" label="い" selected="selected">い</option> </select><br> <label style="white-space: nowrap;"><input type="radio" name="radio1" value="1">う</label><br /> <label style="white-space: nowrap;"><input type="radio" name="radio1" value="2" checked="checked">え</label><br> <input type="checkbox" name="check1" id="check1" value="56789"> かきくけこ<br> <button name="button1" id="button1" type="button" value=" 押すのじゃ "> 押すのじゃ </button><br> <input type="hidden" name="hidden1" value="あいうえお" id="hidden1" /><br> </boby> </html>
例であげたほかにも以下のフォーム部品に対応しています。
- Zend_Form_Element_Button
- Zend_Form_Element_Checkbox
- Zend_Form_Element_Hidden
- Zend_Form_Element_Hash
- Zend_Form_Element_Image
- Zend_Form_Element_MultiCheckbox
- Zend_Form_Element_Multiselect
- Zend_Form_Element_Password
- Zend_Form_Element_Radio
- Zend_Form_Element_Reset
- Zend_Form_Element_Select
- Zend_Form_Element_Submit
- Zend_Form_Element_Text
- Zend_Form_Element_Textarea
詳細はドキュメントで・・・と言いたいところですが、ZendFramework-1.5.x/library/Zend/View/Helper/Form*.php 以下のソースファイルを直接開いてみたほうが使い方が理解しやすいと思います。