Creo que sería muy útil crear una validación del formulario del lado del cliente en los componentes symfony2 Form
y Validator
.Crear validación combinada del lado del cliente y del lado del servidor en Symfony2
La mejor manera de hacerlo sería pasar las restricciones de validación a la vista de formulario. Con esa información, sería posible hacer una plantilla que la muestra un campo de formulario a algo como esto:
<div>
<label for="form_email">E-Mail</label>
<input
id="form_email" type="text" name="form[email]" value=""
data-validation-constraints='{"NotBlank":{},"MinLength":{"limit":6}}'
/>
</div>
La parte Javascript a continuación, sería encontrar todos <input>
elementos que tienen el atributo data-validation-constraints
y crear la validación correcta para ellos.
Para pasar las restricciones de validación a la vista de formulario, pensé que la mejor manera sería crear una extensión de tipo de formulario. Ese es el punto de mi pregunta: ¿Es esta la manera correcta? ¿Y cómo es esto posible?
En el momento en que mi solicitud de prórroga tipo se parece a esto:
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormBuilder;
class FieldTypeExtension extends \Symfony\Component\Form\AbstractTypeExtension{
public function getExtendedType(){
return 'field';
}
public function buildView(FormView $view, FormInterface $form)
{
// at this point i didn't find a way to get the
// validation constraints out of the $form
// the `getAllValidationConstraints` here is just an example
$view->set('validation_constraints', $form->getAllValidationConstraints());
}
}
¿Cómo puedo obtener todas las restricciones de validación aplicados a un campo de formulario fuera del objeto FormInterface?
@ alessandro1997 este paquete trata de resolver el mismo problema como he descrito, pero de una manera muy diferente. Actualmente funciona solo con restricciones definidas en anotaciones en la entidad. Quiero obtener todas las restricciones, sin importar de dónde vienen. Quiero usar el mismo mecanismo para encontrar los constantes que usa el método 'isValid'. – ausi