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