SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【ZendFramework】Zend_Formを使う

Zend_Formのいいところ

などなど。

こういう作り方が当たり前になればめんどくさいと感じなくなると思う。ルーズに成り行き任せでHTMLとphpを書きたいときにはめんどくさいかもしれない。

Zend_Form例

フォームの定義はこんな感じ。

class Application_Form_TestForm extends Zend_Form
{
	public function init()
	{
		$this->setMethod('post');

		$this->addElement('text', 'name', array(
			'label'      => '会社名',
			'required'   => true,
			'filters'    => array('StringTrim'),
			'validators' => array(
				array('validator' => 'StringLength', 'options' => array(0, 100))
			)
		));

		$this->addElement('text', 'code', array(
			'label'      => '取引先番号',
			'required'   => true,
			'filters'    => array('StringTrim'),
			'validators' => array(
				'alnum',
			)
		));

		$this->addElement('text', 'email', array(
			'label'      => 'メールアドレス',
			'required'   => false,
			'filters'    => array('StringTrim'),
			'validators' => array(
				'EmailAddress',
			)
		));

		$this->addElement('select', 'tantosha', array(
			'label'      => '担当者',
			'required'   => false,
			'multiOptions'    => array(
				'' => '選択してください',
				1 => '佐藤',
				2 => '加藤',
				3 => '伊藤',
			),
		));

		$this->addElement('textarea', 'note', array(
			'label'      => '備考',
			'required'   => false,
			'cols' => 50,
			'rows' => 5,
			'validators' => array(
				array('validator' => 'StringLength', 'options' => array(0, 20))
			)
		));

		$this->addElement('submit', 'toroku', array(
			'ignore'   => true,
			'label'    => '登録する',
		));
	}
}

これをControllerで作ってViewに渡して、

$form = new Application_Form_TestForm();
$this->view->form = $form;

これをViewスクリプト側で、レンダリング。

こんな風にデフォルトの方法でレンダリングすると

<?php
echo $this->form;
?>

こんな風に、フォームのHTMLが書き出される。

<form method="post" action="">
<dl>
<dt>会社名</dt>
<dd><input type="text" name="name" value="" /></dd>
<dt>取引先コード</dt>
<dd><input type="text" name="code" value="" /></dd>
...(あくまでも「こんな風」です。いろいろ省略してます。)

Zend_form デフォルトのレンダリング

Zend_form デフォルトのレンダリング


さてここで、dl,dt,ddタグではなくて、テーブルでレイアウトしたいときどうするか?また次回

関連するメモ

コメント