Quiero crear un validador similar al modo en que GitHub maneja la eliminación de repositorios. Para confirmar la eliminación, necesito ingresar el nombre del repositorio. Aquí quiero confirmar borrar ingresando la propiedad de la entidad "nombre". Tendré que pasar el nombre a la restricción o acceder de alguna manera, ¿cómo lo hago?Validador personalizado/Restricción con argumentos/parámetros en Symfony 2
5
A
Respuesta
2
usted podría de hecho utilizar una restricción de validación de hacerlo:
1: Crear una forma de borrar (o directamente o utilizando un tipo):
return $this->createFormBuilder($objectToDelete)
->add('comparisonName', 'text')
->setAttribute('validation_groups', array('delete'))
->getForm()
;
2: Añadir una propiedad pública comparisonName
en tu entidad. (o use un objeto proxy), que se asignará al campo de formulario correspondiente más arriba.
3: Define una restricción de nivel de clase, validador de devolución de llamada para comparar ambos valores:
/**
* @Assert\Callback(methods={"isComparisonNameValid"}, groups={"delete"})
*/
class Entity
{
public $comparisonName;
public $name;
public function isComparisonNameValid(ExecutionContext $context)
{
if ($this->name !== $this->comparisonName) {
$propertyPath = $context->getPropertyPath() . '.comparisonName';
$context->addViolationAtPath(
$propertyPath,
'Invalid delete name', array(), null
);
}
}
}
4: muestra el formulario en la vista:
<form action="{{ path('entity_delete', {'id': entity.id }) }}">
{{ form_rest(deleteForm) }}
<input type="hidden" name="_method value="DELETE" />
<input type="submit" value="delete" />
</form>
5: Para verificar que la consulta de eliminación sea válida, utilícela en su controlador:
$form = $this->createDeleteForm($object);
$request = $this->getRequest();
$form->bindRequest($request);
if ($form->isValid()) {
$this->removeObject($object);
$this->getSession()->setFlash('success',
$this->getDeleteFlashMessage($object)
);
}
return $this->redirect($this->getListRoute());
Cuestiones relacionadas
- 1. Symfony 2 validador único
- 2. Symfony 2 campos adicionales
- 3. Symfony 2 - Trabajar con activos
- 4. symfony redirigir con 2 parámetros
- 5. 2 Nivel Entidad carpeta en Symfony 2
- 6. Symfony 2 en hosts virtuales
- 7. Cómo guardar en Symfony 2?
- 8. Symfony 2 rutas lesscss
- 9. Cómo usar PHPExcel correctamente con Symfony 2
- 10. Symfony 2 Formulario con lista de selección
- 11. traducible junto con Symfony 2 formas
- 12. Autenticación Symfony 2 con (doctrina) Entidad
- 13. Activo Twig con CDN utilizando Symfony 2
- 14. Servicio Symfony 2 con varias instancias?
- 15. Symfony 2 formularios embebidos
- 16. Symfony 2 + herencia de Doctrine 2 +
- 17. symfony 2 equivalente para la función url_for() en symfony 1
- 18. Symfony 2 + Twig variables globales
- 19. Validación de Equal Fields en Symfony 2
- 20. Anulando excepciones de Symfony 2?
- 21. Symfony 2 Dependency Injection & autowiring
- 22. Symfony 2 sin acceso SSH
- 23. Almacenar puntos espaciales en Symfony 2/Doctrine 2 Entities?
- 24. Symfony 2 Plantilla anulación sonataAdminBundle
- 25. Problema con Entity Manager y phpunit en Symfony 2
- 26. Marco Php: Symfony 1, Symfony 2 o Yii
- 27. Symfony 2 Proxy para reemplazar iterativamente el proyecto Symfony 1.4
- 28. Localizar en ramitas usando Symfony 2
- 29. Desactivar el escape en Symfony 2/twig
- 30. Cómo habilitar ENUM en Symfony 2/Doctrina