Symfony2: Opción virtual en los formularios

En este artículo veremos el uso de la opción virtual en los formularios que nos ayudará a reutilizar código. Con este campo podemos embeber formularios para reutilizarlos de forma horizontal.

En la documentación está explicado y muestra cómo usar esta opción con dos Entities con varios campos iguales. Para ello crea un formulario con los campos comunes con la opción virtual a true y dos formularios con los campos específicos de cada uno que embeben el formulario con los campos comunes.

Vamos a hacer nuestro propio ejemplo para ver una demo funcionando. En primer lugar vamos a ver el diagrama que usaremos:

 Symfony2: Opción virtual en los formularios

Es el típico ejemplo de herencia en el que tenemos una clase abstracta Animal:

De la que extienden Bird:

Y Dog:

Creamos ahora AnimalType que será el formulario con la opción virtual activada:

Lo importante es la opción virtual, con esto ya tenemos el formulario que podemos reutilizar tanto para Bird como para Dog. Creamos BirdType:

Como se puede ver embebemos el formulario que hemos creado antes configurando el data_class para indicar la clase que va a manejar, también se podría indicar aquí la opción virtual. El nombre del campo, en este caso animal, no es relevante.

Finalmente DogType:

Con esto ya podemos crear un formulario de tipo DogType o BirdType que contendrá también los campos de AnimalType.

Ver Demo