Devel::Bayside このページをアンテナに追加 RSSフィード

2008-04-10

Zend_Form を使ってみる

|  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 以下のソースファイルを直接開いてみたほうが使い方が理解しやすいと思います。

takagitakagi 2008/05/29 23:55 これって、Zend_Formではなくて、viewヘルパーではないですか?

BaysideBayside 2008/05/30 15:04 確かにビューヘルパーですね。
Zend_Form のインスタンスをコントローラで作成すると、CとVがべったりでこれってMVC的にどうなの?と思いますし、
テンプレートで Zend_Form インスタンスを生成するコードをべたーっと書くのもデザインとロジックの分離という観点でどうなの?と思いますし、
ビューヘルパー以外の使いどころって難しいですよね・・。

Connection: close