Zend_Formを触ってみる
■結論
コントローラ
<?php
class Admin_IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$form = $this->createForm();
$this->view->form = $form;
}
public function registerAction()
{
$form = $this->createForm();
if(!$form->isValid($this->_getAllParams())){// error
$this->view->assign('form', $form);
return $this->render('index');
}
else{// success
$this->_dbh->register($form->getValues());
}
}
private function createForm()
{
$form = new Zend_Form();
$form->addElement(
'text',
'name',
array(
'validators' => array(
array('Regex', false, array('/^[a-z]/i'))
),
'label' => 'Name : ',
'required' => true
'filters' => array(
'StringToLower',
'StripTags'
)
)
);
$form->addElement('hash', 'checkHash');
$form->addElement('submit', '送信');
return $form;
}
}
?>
index.phtml
<?php echo $this->form; ?>
最初にZend_Formのインスタンスを作成する。
他のモジュールとの連携
- バリデート(Zend_Validate)
- フィルタリング(Zend_Filter)
■Zend_Form
コントローラ
$form = new Zend_Form();
$form->setAction('/admin/index/register/')->setMethod('post');
$this->view->form = $form;
ビュー
<?php echo $this->form; ?>
出力
<form enctype="application/x-www-form-urlencoded" action="/admin/index/register/" method="post"> <dl class="zend_form"> </dl> </form>
■ 要素を作る
簡単。(コントローラ)
$name = $form->createElement('text', 'name');
addElement がもっと簡単(コントローラ)
$form->addElement('text', 'name');
バリデートもフィルタリングも一緒に追加できちゃう。(コントローラ)
$form->addElement(
'text',
'name',
array(
'validators' => array(
array('Regex', false, array('/^[a-z]/i'))
),
'label' => 'Name : ',
'required' => true,
'filters' => array(
'StringToLower',
'StripTags'
)
)
);
こんなんもある。めんどー。(コントローラ)
require_once 'Zend/Form/Element/Text.php';
$name = new Zend_Form_Element_Text('name');
■ バリデータを作る
addValidator(mixed $nameOrValidator, bool $breakChainOnFailure, array $options)
$name = new Zend_Form_Element_Text('name');
$name->addValidator('Alnum', false, array(true))
->addValidator('Regex', false, array('/^[a-zA-Z\s]+/'))
->setLabel('Name : ')
->setRequired(true);
- Zend_Form_Element::addValidator(string $class, bool $is_next, array $options);
- 第一引数で指定したバリデータを要素に付加する。
バリデータ一覧
http://framework.zend.com/manual/ja/zend.validate.set.html
■フィルターを作る
addFilter(mixed $nameOrFilter, array $options)
$name = new Zend_Form_Element_Text('name');
$name->addFilter('StringToLower');
フィルタ一覧
TrackBack URL :
Comments (0)
コメントはまだありません»
コメントはまだありません。
この投稿へのコメントの RSS フィード。TrackBack URL
コメントする