Introducción
Suele ocurrir que después de crear una base de datos con sus tablas, nos demos cuenta que necesitamos modificar una de las tablas, para agregar un campo nuevo no previsto originalmente.
Hacer esto, requiere de varios pasos que paso a explicar.
Primer paso: Modificar la tabla
Yo utilizo phpAdmin y bases de datos MySQL. Ingresamos a phpMyAdmin, buscamos la tabla a modificar (en mi caso, se llama docentes). Vemos la estructura de la tabla docentes antes de su modificación en la fiura siguiente (la tabla es más grande que lo que muestra la imagen, ya que comprende 26 campos que no entran completos en la imagen):
A esta tabla, le voy a agregar un campo de tipo Boolean llamado discrecional.
Segundo paso: Modificar la entidad
Debemos modificar en el código, la entidad donde se define la tabla en Symfony 2.8. En mi caso, el archivo se llama Docentes.php y se ubica en la carpeta: src/BackendBundle/Entity
Procedemos a agregar el nuevo campo y sus métodos get y set al archivo Docentes.php, como muestran las dos figuras siguientes:
Dependiendo de como se haya creado la base de datos con sus tablas, quizás se haya creado un archivo de doctrine con extensión xml. En mi caso, se llama Docentes.orm.xml y se encuentra ubicado en la carpeta que muestra la figura siguiente:
Agregamos la nueva línea que suministra información del nuevo campo (destacado en recuadro rojo en la imagen siguiente):
Tercer paso: Modificar los formularios
Por supuesto, debemos incorporar estos datos a los archivos PHP que crean los formularios para dar de alta y modificar la entidad Docentes, agregando el campo nuevo.
En este caso, editamos el archivo DocentesType.php ubicado en: src/BackendBundle/Form Agregamos la línea: ->add(‘discrecional’)
Cuarto paso: Modificar las vistas
Debemos ahora introducir los cambios en los archivos Twig donde necesitamos que este campo aparezca. En mi caso son los siguientes formularios:
- new.html.twig
- edit.html.twig
- show.html.twig
Quinto paso: Limpiar la cache
Siempre es conveniente, cuando hacemos modificaciones de este tipo, limpiar la cache de Symfony.