Зенд Краткое руководство:Zend 2.2, я строю формы и фильтры ввода на фабрике, проверка происходит, но не отображается?
http://framework.zend.com/manual/2.2/en/modules/zend.form.quick-start.html
Подразумевается, что форма завод может присоединить фильтры автоматически путем добавления их в массив конфигурации, рудиментарным тестирование показывает, что проверка происходит, но ничего не выходит передается обратно в view (formElementErrors или formRow). )
Завод Массив
$this->form = array(
'hydrator' => 'Zend\Stdlib\Hydrator\ArraySerializable',
'elements' => array(
array(
'spec' => array(
'name' => 'name',
'options' => array(
'label' => 'Your name',
),
'attributes' => array(
'type' => 'text'
),
)
),
array(
'spec' => array(
'type' => 'Zend\Form\Element\Email',
'name' => 'email',
'options' => array(
'label' => 'Your email address',
)
),
),
array(
'spec' => array(
'type' => 'Zend\Form\Element\Csrf',
'name' => 'security',
),
),
array(
'spec' => array(
'name' => 'send',
'attributes' => array(
'type' => 'submit',
'value' => 'Submit',
),
),
),
),
'input_filter' => array(
'name' => array(
'required' => true,
'filters' => array(
array('name' => 'Zend\Filter\StringTrim'),
),
),
'email' => array(
'required' => true,
'filters' => array(
array('name' => 'Zend\Filter\StringTrim'),
),
'validators' => array(
new Validator\EmailAddress(),
),
)
)
);
Контроллер
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Form\Factory;
use Application\Form\Login;
class LoginController extends AbstractActionController
{
public function indexAction()
{
$factory = new Factory();
$login = new Login();
$form = $factory->createForm($login->form);
if ($this->getRequest()->isPost())
{
$form->setData($this->getRequest()->getPost());
/*
if ($form->isValid())
{
die('valid');
}
else
{
die('invalid');
}
*/
}
return(array('form' => $form));
}
public function loginAction()
{
die('login');
}
}
Посмотреть
<?php
$form = $this -> form;
$form -> prepare();
$form -> setAttribute('method', 'post');
$formLabel = $this -> plugin('formLabel');
echo $this -> form() -> openTag($form);
?>
<div class="form_element">
<?php echo $this -> formRow($form -> get('name'));?>
</div>
<div class="form_element">
<?php echo $this -> formRow($form -> get('email')); ?>
</div>
<?php echo $this->formElement($form -> get('security')); ?>
<?php echo $this->formElement($form -> get('send')); ?>
<?php echo $this->form()->closeTag(); ?>