zend-framework2 zend-form2

zend framework2 - ZF2 Dynamic Form Filters/Validators



zend-framework2 zend-form2 (2)

Agregar validador de forma dinámica:

$form->getInputFilter()->get(''element_name'')->getValidatorChain()->attach(new ValidatorClassName());

Agregar filtro dinámicamente:

$form->getInputFilter()->get(''element_name'')->getFilterChain()->attach(new FilterClassName());

Estoy configurando un controlador que creará un formulario. No puedo usar una extensión para la clase Form, así que necesito crear mi formulario en mi controlador.

$form = new Form(''example''); $fieldset = new Fieldset(''default''); $fieldset->add(array(''name'' => ''example_field'', ''attributes'' => array(''type'' => ''text'', ''id'' => ''example_field''), ''options'' => array(''label'' => ''Example Field'',),)); $form->add($fieldset);

La pregunta principal aquí es, ¿cómo puedo definir los filtros y validadores para cada elemento / fieldset sin la necesidad de crear una clase que implemente InputFilterAwareInterface, así que puedo hacer todo desde mi controlador?

¡Gracias por adelantado!


Puede agregar / eliminar validadores de formulario con el control de entrada de formulario, este es mi ejemplo:

$form = new /Zend/Form/Form(); $name = array( ''name'' => ''username'', ''options'' => array( ''label'' => ''Your name'', ), ''attributes'' => array( ''type'' => ''text'' ), ); $form->add($name); $filter = $form->getInputFilter(); $filter->remove(''username''); $filter->add(array( ''name'' => ''username'', ''required'' => true, ''validators'' => array ( ''stringLength'' => array ( ''name'' => ''StringLength'', ''options'' => array ( ''max'' => ''3'', ), ), ), )); $form->setInputFilter($filter); $form->setData(array( ''username'' => ''longtext'', )); $form->prepare(); echo $form->isValid(); //false print_r($form->getMessages()); //stringLengthTooLong error will show