Doctrine symfony

Doctrine symfony

TRABAJO CON BASE DE DATOS: DOCTRINE
Trabajaremos con anotaciones (podríamos optar también por ficheros yml, php o xml).
El primer paso es configurar la base de datos (recordar que durante la instalación de Symfony se
establecieron los parámetros por defecto), en la ruta:
El siguiente paso es crear una base de datos para el proyecto, se puede hacer desde phpmyadmin o
desde consola:
Symfony permite crear las clases a partir del modelo relacional (ingeniería inversa). Pero vamos a
hacerlo a la inversa, creando las clases y posteriormente el modelo relacional.
Tenemos que crear la entidad Blog.php dentro de la carpeta Entity:
Y ahora para crear el esquema en base a esa clase:
Y observamos que se ha creado la tabla:
Y si volvemos a abrir la clase Blog.php observamos que se han creado automáticamente los setters
y los getters.
El siguiente paso es generar la ruta:
Vamos a crear un nuevo controlador, de manera que trabajaremos con un controlador para cada
entidad:
El siguiente paso, una vez mas, es crear la vista, en la carpeta Resources/views/Blog (previamente
creada).
El siguiente paso es instalar el paquete de Doctrine DataFixtures, para poder finalmente persistir
datos en la base de datos, donde introduciremos las diferentes entradas de la base de datos. Para
ello:
Hay que instalar también el paquete Fixtures, introducimos estas dos líneas en composer.json:
Actualizamos:
Ahora tenemos que tener también los paquetes “fixtures”:
Lo siguientes es registrar los paquetes en el appkernel.
Introducimos estas tres líneas:
Ahora tenemos que añadir los accesorios (datos). Para ellos creamos el fichero BlogFixtures.php:
Y lo llevamos a la carpeta (creada previamente):
Hay que modificar la clase BlogFixtures.php para añadir dos nuevos “uses”, extender la clase de
AbstractFixture y modificar el parámetro recibido por la funcion load:
Si todo ha ido bien al ejecutar este comando para cargar los datos se recibirá el siguiente mensaje:
Ahora probamos a introducir en la URL del navegador:
Tras esto volvemos a cargar esa URL y veremos que entramos en un post con contenido al que aún
le falta la imagen:
Tras añadir imágenes a la carpeta /web/images, y modificar el archivo screen.css en la carpeta css
(que ya teníamos creada anteriormente), el resultado es el siguiente:
Ahora hay que modificar el archivo Blog.php, para registrar sellos temporales del momento de la
persistencia en la base de datos:
Introducimos este constructor y función para que la aplicación la ejecute antes de hacer persistentes
los datos en la base de datos (@ORMPreUpdate):
Y volvemos a cargar los datos:
A continuación tenemos que cambiar el index del Page
(Blogger/BlogBundle/Resources/views/Page/index.html.twig) para poder mostrar todas las entradas
en la página principal.
Vamos ahora al PageController (Blogger/BlogBundle/Controller/PageController.php):
Ahora vemos que en nuestra home se enumeran todas las entradas.
Ahora vamos a la entidad Blog (Blog.php), vemos que la función getBlog devuelve blog. Tenemos
que modificarlo de la siguiente manera:
Esto sirve para poder determinar o limitar el número de caracteres de cada entrada que sacamos en
el listado del home.
Tras esto volvemos a la plantilla index.html.twig, y en la llamada a la entidad Blog podemos pasarle
como parámetro la longitud de la entrada.
Ahora vamos a separar la consulta doctrine del controlador, para poder reutilizarla en cualquier
momento sin tener que acceder al controlador. Para ello trabajaremos con repositorios, un script
donde pondremos todas las consultar doctrine.
Dentro de la carpeta Entity creamos una carpeta Repository y dentro creamos BlogRepository.php
con el siguiente contenido:
Y ahora cambiamos en el PageController la consulta por una llamada al repositorio:
Ahora vamos a trabajar los comentarios. Como un comentario es de un blog pero un blog tiene
muchos comentarios esto se trabaja con anotaciones. En primer lugar creo la entidad Comment en la
carpeta Entity.
Y en la entidad Blog:
php bin/console doctrine:generate:entities Blogger
Tras esto me ha debido crear todos los métodos de acceso en la clase Comment.
Hacemos persistentes las clases en la base de datos, lo haremos con migraciones.
Y veremos que se ha generado automáticamente la tabla de comentarios en nuestra base de datos:
Lo siguiente es cargar los comentarios. Para ello tenemos que llevarnos el fichero a DataFixtures y
después hacer un load.
Añadiendo al final también:
Ahora en la clase CommentRepository.php (creada automaticamente) añadimos:
Ahora en BlogController.php cambiamos:
Ahora cambiamos la plantilla show.html.twig:
Creamos en la carpeta views otra carpeta llamada Comment, con un archivo index en su interior con
el siguiente contenido:
Y ya podremos ver los comentarios en cada entrada:
Ahora vamos a implementar la funcionalidad para añadir comentarios. Para esto tenemos que
generar un formulario con Doctrine.
Se debe haber creado la clase con el siguiente contenido:
Necesitaremos un controlador para manejar este formulario. Para ello añadimos una nueva ruta:
Ahora tenemos que crear el CommentController.php:
Nota: Los parámetros de this→createForm en funcion createAction deben ser igual que en newAction.
Ahora creamos la vista form.html.twig en la ruta especificada:
Ahora creamos la vista create.html.twig:
Ahora hay que modificar el show.html.twig:
Y ya podemos añadir comentarios:
Podemos hacer que la vista de cada entrada en el home ofrezca info relativa al número de
comentarios que tiene esta entrada, e incluso convertir ese número en un enlace que nos lleve
directamente a esos comentarios en la entrada. Para ello tenemos que modificar el index.html.twig
del views/Page:
Vemos como dentro del href de la etiqueta <a> indicamos la ruta de la entrada del blog e incluso
con “#comments” indicamos que el navegador haga scroll vertical hasta llegar a la zona de los
comentarios. Posteriormente, añadimos el texto de la etiqueta <a>, que será la longitud del array de
comentarios.
Ahora vamos a implementar la barra lateral. Para ello añadimos en BlogRepository.php:
Y también:
Ahora vamos al PageController.php y añadimos:
Creamos sidebar.css en web/css con el siguiente contenido:
Creamos en Resources/views/Page el sidebar.html.twig:
Y por último en el layout.html.twig:
Finalmente tenemos:
Ahora para añadir a la barra lateral los comentarios más recientes tenemos que hacer lo siguiente:
Añadimos en el CommentRepository.php:
Ahora vamos al PageController.php y modificamos el sidebarAction:
Ahora en el config.yml (dentro de app/config/) incluimos:
En el sidebar.html.twig añadimos:
Y vemos que el blog ha cambiado:

Recomendados

Primera app von
Primera appPrimera app
Primera apprmirandaibanez
302 views7 Folien
GUIA DE LABORATORIO PHONE GAP JQUERY MOBILE CARGADO DE_DATOS_DE_REGISTROS... von
GUIA DE  LABORATORIO  PHONE GAP JQUERY  MOBILE  CARGADO DE_DATOS_DE_REGISTROS...GUIA DE  LABORATORIO  PHONE GAP JQUERY  MOBILE  CARGADO DE_DATOS_DE_REGISTROS...
GUIA DE LABORATORIO PHONE GAP JQUERY MOBILE CARGADO DE_DATOS_DE_REGISTROS...Ivan Petrlik
4.5K views25 Folien
Reportes von
ReportesReportes
ReportesKelion Tadeo Santos
428 views11 Folien
Manual Swing-Java-PostgreSQL von
Manual Swing-Java-PostgreSQLManual Swing-Java-PostgreSQL
Manual Swing-Java-PostgreSQLpablo
7.2K views38 Folien
instalacion y conexion a base de datos postgrest /java von
instalacion y conexion a base de datos postgrest /javainstalacion y conexion a base de datos postgrest /java
instalacion y conexion a base de datos postgrest /javaNey Rogger Miranda
2.6K views43 Folien
Foca API v0.1 von
Foca API v0.1Foca API v0.1
Foca API v0.1Chema Alonso
2.2K views11 Folien

Más contenido relacionado

Was ist angesagt?

Tutorial de persistencia en java con postgresql von
Tutorial de persistencia en java con  postgresqlTutorial de persistencia en java con  postgresql
Tutorial de persistencia en java con postgresqlCarlos Anrango
3.8K views18 Folien
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL... von
GUIA DE  LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...GUIA DE  LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...Ivan Petrlik
1.1K views20 Folien
Tutorial de jpa para windows usando net beans y mysql parte 1 von
Tutorial de jpa para windows usando net beans y mysql parte 1Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial de jpa para windows usando net beans y mysql parte 1Henry Mendoza Puerta
3.1K views8 Folien
Tutorial git comandos rafael mirandaibanez von
Tutorial git comandos rafael mirandaibanezTutorial git comandos rafael mirandaibanez
Tutorial git comandos rafael mirandaibanezrmirandaibanez
233 views13 Folien
Laravel vc von
Laravel vcLaravel vc
Laravel vcVictor Cusco
18 views24 Folien
ConexióN A Base De Datos En Netbeans von
ConexióN A Base De Datos En NetbeansConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En Netbeansguest044583b
27.1K views31 Folien

Was ist angesagt?(20)

Tutorial de persistencia en java con postgresql von Carlos Anrango
Tutorial de persistencia en java con  postgresqlTutorial de persistencia en java con  postgresql
Tutorial de persistencia en java con postgresql
Carlos Anrango3.8K views
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL... von Ivan Petrlik
GUIA DE  LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...GUIA DE  LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
Ivan Petrlik1.1K views
Tutorial de jpa para windows usando net beans y mysql parte 1 von Henry Mendoza Puerta
Tutorial de jpa para windows usando net beans y mysql parte 1Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial git comandos rafael mirandaibanez von rmirandaibanez
Tutorial git comandos rafael mirandaibanezTutorial git comandos rafael mirandaibanez
Tutorial git comandos rafael mirandaibanez
rmirandaibanez233 views
ConexióN A Base De Datos En Netbeans von guest044583b
ConexióN A Base De Datos En NetbeansConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En Netbeans
guest044583b27.1K views
Eclipse para novatos java von martaferrari
Eclipse para novatos javaEclipse para novatos java
Eclipse para novatos java
martaferrari440 views
Crear una base de datos mysql con un script de sql von Emerson Garay
Crear una base de datos mysql con un script de sqlCrear una base de datos mysql con un script de sql
Crear una base de datos mysql con un script de sql
Emerson Garay176.8K views
Configurar entorno Android von jubacalo
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
jubacalo2K views
Primeros pasos con Backbone js, por Xavier Aznar von Pablo Aguilera
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier Aznar
Pablo Aguilera446 views
Manual Netbeans Bases Datos2 von mtemarialuisa
Manual Netbeans Bases Datos2Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2
mtemarialuisa10.1K views
Reportes en java con i report y netbeans von hernanluis
Reportes en java con i report y netbeansReportes en java con i report y netbeans
Reportes en java con i report y netbeans
hernanluis10K views
Integración de Netbeans con Ireport y SQL Server von SonGoku10
Integración de Netbeans con Ireport y SQL ServerIntegración de Netbeans con Ireport y SQL Server
Integración de Netbeans con Ireport y SQL Server
SonGoku1018.5K views

Destacado

850-0490-00 Rev A-Oscillatory MAP ABP Case Study von
850-0490-00 Rev A-Oscillatory MAP ABP Case Study 850-0490-00 Rev A-Oscillatory MAP ABP Case Study
850-0490-00 Rev A-Oscillatory MAP ABP Case Study Christina Mason
258 views3 Folien
Doctrine symfony von
Doctrine symfonyDoctrine symfony
Doctrine symfonyrmirandaibanez
371 views27 Folien
Questionnaire Results von
Questionnaire ResultsQuestionnaire Results
Questionnaire ResultsKiera_Herbert
304 views16 Folien
The Art Of The Titles Reseach von
The Art Of The Titles ReseachThe Art Of The Titles Reseach
The Art Of The Titles ReseachKiera_Herbert
346 views11 Folien
Toyota presentation von
Toyota presentationToyota presentation
Toyota presentationGovind Kudambal
1K views23 Folien
My music video idea von
My music video ideaMy music video idea
My music video ideaKiera_Herbert
331 views6 Folien

Similar a Doctrine symfony

Conociendo el Patron Modelo Vista Controlador von
Conociendo el Patron   Modelo Vista ControladorConociendo el Patron   Modelo Vista Controlador
Conociendo el Patron Modelo Vista Controladorlissette_torrealba
240 views21 Folien
Vistiendo a WordPress von
Vistiendo a WordPressVistiendo a WordPress
Vistiendo a WordPressLorena Fernández
43.7K views62 Folien
WPF Series - 01 von
WPF Series - 01WPF Series - 01
WPF Series - 01kazcorp
374 views18 Folien
Creación de un sitio web en wordpress von
Creación de un sitio web en wordpressCreación de un sitio web en wordpress
Creación de un sitio web en wordpressMilton González
172 views10 Folien
Guia basica de ruby on rails von
Guia basica de ruby on railsGuia basica de ruby on rails
Guia basica de ruby on railsroberthp09
32 views8 Folien
Hands on Lab: Almacenamiento local con base de datos, launchers y choosers von
Hands on Lab: Almacenamiento local con base de datos, launchers y choosersHands on Lab: Almacenamiento local con base de datos, launchers y choosers
Hands on Lab: Almacenamiento local con base de datos, launchers y choosersSorey García
1.1K views23 Folien

Similar a Doctrine symfony(20)

WPF Series - 01 von kazcorp
WPF Series - 01WPF Series - 01
WPF Series - 01
kazcorp374 views
Creación de un sitio web en wordpress von Milton González
Creación de un sitio web en wordpressCreación de un sitio web en wordpress
Creación de un sitio web en wordpress
Milton González172 views
Guia basica de ruby on rails von roberthp09
Guia basica de ruby on railsGuia basica de ruby on rails
Guia basica de ruby on rails
roberthp0932 views
Hands on Lab: Almacenamiento local con base de datos, launchers y choosers von Sorey García
Hands on Lab: Almacenamiento local con base de datos, launchers y choosersHands on Lab: Almacenamiento local con base de datos, launchers y choosers
Hands on Lab: Almacenamiento local con base de datos, launchers y choosers
Sorey García1.1K views
Computación avanzada en java cert von Maestros Online
Computación avanzada en java certComputación avanzada en java cert
Computación avanzada en java cert
Maestros Online452 views
Alojar un dominio en servidor propio e instalar Wordpress von MJ Cachón Yáñez
Alojar un dominio en servidor propio e instalar WordpressAlojar un dominio en servidor propio e instalar Wordpress
Alojar un dominio en servidor propio e instalar Wordpress
MJ Cachón Yáñez6.2K views
Linq to sql 8 von jcfarit
Linq to sql 8Linq to sql 8
Linq to sql 8
jcfarit330 views
Funciones definidas por_el_usuario_y_variables_superglobales von CarlosUribe93
Funciones definidas por_el_usuario_y_variables_superglobalesFunciones definidas por_el_usuario_y_variables_superglobales
Funciones definidas por_el_usuario_y_variables_superglobales
CarlosUribe93114 views
Webbrowser de vb 6.0 y vb.net von adezhiz
Webbrowser de vb 6.0 y vb.netWebbrowser de vb 6.0 y vb.net
Webbrowser de vb 6.0 y vb.net
adezhiz2.4K views

Más de rmirandaibanez

Instalación Android Studio von
Instalación Android StudioInstalación Android Studio
Instalación Android Studiormirandaibanez
172 views5 Folien
Tutorial git comandos von
Tutorial git comandosTutorial git comandos
Tutorial git comandosrmirandaibanez
188 views7 Folien
Control de versiones en eclipse von
Control de versiones en eclipseControl de versiones en eclipse
Control de versiones en eclipsermirandaibanez
226 views14 Folien
Control de versiones en eclipse von
Control de versiones en eclipseControl de versiones en eclipse
Control de versiones en eclipsermirandaibanez
132 views14 Folien
Sisinf practica1 requerimientos_so von
Sisinf practica1 requerimientos_soSisinf practica1 requerimientos_so
Sisinf practica1 requerimientos_sormirandaibanez
276 views4 Folien
Caso transformacion modelo ei modelo relacional von
Caso transformacion modelo ei   modelo relacionalCaso transformacion modelo ei   modelo relacional
Caso transformacion modelo ei modelo relacionalrmirandaibanez
788 views2 Folien

Más de rmirandaibanez(20)

Control de versiones en eclipse von rmirandaibanez
Control de versiones en eclipseControl de versiones en eclipse
Control de versiones en eclipse
rmirandaibanez226 views
Control de versiones en eclipse von rmirandaibanez
Control de versiones en eclipseControl de versiones en eclipse
Control de versiones en eclipse
rmirandaibanez132 views
Sisinf practica1 requerimientos_so von rmirandaibanez
Sisinf practica1 requerimientos_soSisinf practica1 requerimientos_so
Sisinf practica1 requerimientos_so
rmirandaibanez276 views
Caso transformacion modelo ei modelo relacional von rmirandaibanez
Caso transformacion modelo ei   modelo relacionalCaso transformacion modelo ei   modelo relacional
Caso transformacion modelo ei modelo relacional
rmirandaibanez788 views
Reglas conversión modelo relacional esquema von rmirandaibanez
Reglas conversión modelo relacional esquemaReglas conversión modelo relacional esquema
Reglas conversión modelo relacional esquema
rmirandaibanez333 views
Caso transformacion modelo EI - modelo relacional von rmirandaibanez
Caso transformacion modelo EI - modelo relacionalCaso transformacion modelo EI - modelo relacional
Caso transformacion modelo EI - modelo relacional
rmirandaibanez189 views
Caso transformacion modelo EI - Modelo relacional von rmirandaibanez
Caso transformacion modelo EI - Modelo relacionalCaso transformacion modelo EI - Modelo relacional
Caso transformacion modelo EI - Modelo relacional
rmirandaibanez140 views
Reglas conversión modelo relacional von rmirandaibanez
Reglas conversión modelo relacionalReglas conversión modelo relacional
Reglas conversión modelo relacional
rmirandaibanez771 views
Cuestionarios SGBD y arboles B+ von rmirandaibanez
Cuestionarios SGBD y arboles B+Cuestionarios SGBD y arboles B+
Cuestionarios SGBD y arboles B+
rmirandaibanez344 views
Introducción a lenguajes de programación von rmirandaibanez
Introducción a lenguajes de programaciónIntroducción a lenguajes de programación
Introducción a lenguajes de programación
rmirandaibanez560 views
Detalle de creacion de "Mi primera base de datos" von rmirandaibanez
Detalle de creacion de "Mi primera base de datos"Detalle de creacion de "Mi primera base de datos"
Detalle de creacion de "Mi primera base de datos"
rmirandaibanez409 views
Detalle de creación "Mi primera base de datos" von rmirandaibanez
Detalle de creación "Mi primera base de datos"Detalle de creación "Mi primera base de datos"
Detalle de creación "Mi primera base de datos"
rmirandaibanez273 views
Detalle de elaboración de "Mi primera base de datos" von rmirandaibanez
Detalle de elaboración de "Mi primera base de datos"Detalle de elaboración de "Mi primera base de datos"
Detalle de elaboración de "Mi primera base de datos"
rmirandaibanez292 views
1ª práctica Lenguaje Marcas. Ejemplo 1 von rmirandaibanez
1ª práctica Lenguaje Marcas. Ejemplo 11ª práctica Lenguaje Marcas. Ejemplo 1
1ª práctica Lenguaje Marcas. Ejemplo 1
rmirandaibanez138 views

Último

El uso de las tic en la vida cotidiana.pptx von
El uso de las tic en la vida cotidiana.pptxEl uso de las tic en la vida cotidiana.pptx
El uso de las tic en la vida cotidiana.pptx231471214
6 views5 Folien
por que visitar el estado de mex 2.docx von
por que visitar el estado de mex 2.docxpor que visitar el estado de mex 2.docx
por que visitar el estado de mex 2.docxsasagu8000
8 views13 Folien
HD-NOVIEMBRE-2023.pdf von
HD-NOVIEMBRE-2023.pdfHD-NOVIEMBRE-2023.pdf
HD-NOVIEMBRE-2023.pdfIrapuatoCmovamos
175 views14 Folien
Tarea 4 Realizar transferencia del conocimiento.pptx von
Tarea 4 Realizar transferencia del conocimiento.pptxTarea 4 Realizar transferencia del conocimiento.pptx
Tarea 4 Realizar transferencia del conocimiento.pptxValeriaMartelomoreno
18 views6 Folien
Tranferenciaa de conocimiento.pptx von
Tranferenciaa de conocimiento.pptxTranferenciaa de conocimiento.pptx
Tranferenciaa de conocimiento.pptxJosDanielGirnu
6 views8 Folien
INDICE DE COMPETITIVIDAD URBANA.pdf von
INDICE DE COMPETITIVIDAD URBANA.pdfINDICE DE COMPETITIVIDAD URBANA.pdf
INDICE DE COMPETITIVIDAD URBANA.pdfIrapuatoCmovamos
7 views2 Folien

Último(16)

El uso de las tic en la vida cotidiana.pptx von 231471214
El uso de las tic en la vida cotidiana.pptxEl uso de las tic en la vida cotidiana.pptx
El uso de las tic en la vida cotidiana.pptx
2314712146 views
por que visitar el estado de mex 2.docx von sasagu8000
por que visitar el estado de mex 2.docxpor que visitar el estado de mex 2.docx
por que visitar el estado de mex 2.docx
sasagu80008 views
IM - Operatividad de las Variables.pptx von milennirv2806
IM - Operatividad de las Variables.pptxIM - Operatividad de las Variables.pptx
IM - Operatividad de las Variables.pptx
milennirv28065 views

Doctrine symfony

  • 1. TRABAJO CON BASE DE DATOS: DOCTRINE Trabajaremos con anotaciones (podríamos optar también por ficheros yml, php o xml). El primer paso es configurar la base de datos (recordar que durante la instalación de Symfony se establecieron los parámetros por defecto), en la ruta: El siguiente paso es crear una base de datos para el proyecto, se puede hacer desde phpmyadmin o desde consola: Symfony permite crear las clases a partir del modelo relacional (ingeniería inversa). Pero vamos a hacerlo a la inversa, creando las clases y posteriormente el modelo relacional.
  • 2. Tenemos que crear la entidad Blog.php dentro de la carpeta Entity: Y ahora para crear el esquema en base a esa clase: Y observamos que se ha creado la tabla:
  • 3. Y si volvemos a abrir la clase Blog.php observamos que se han creado automáticamente los setters y los getters. El siguiente paso es generar la ruta:
  • 4. Vamos a crear un nuevo controlador, de manera que trabajaremos con un controlador para cada entidad: El siguiente paso, una vez mas, es crear la vista, en la carpeta Resources/views/Blog (previamente creada).
  • 5. El siguiente paso es instalar el paquete de Doctrine DataFixtures, para poder finalmente persistir datos en la base de datos, donde introduciremos las diferentes entradas de la base de datos. Para ello: Hay que instalar también el paquete Fixtures, introducimos estas dos líneas en composer.json: Actualizamos: Ahora tenemos que tener también los paquetes “fixtures”:
  • 6. Lo siguientes es registrar los paquetes en el appkernel. Introducimos estas tres líneas: Ahora tenemos que añadir los accesorios (datos). Para ellos creamos el fichero BlogFixtures.php:
  • 7. Y lo llevamos a la carpeta (creada previamente): Hay que modificar la clase BlogFixtures.php para añadir dos nuevos “uses”, extender la clase de AbstractFixture y modificar el parámetro recibido por la funcion load: Si todo ha ido bien al ejecutar este comando para cargar los datos se recibirá el siguiente mensaje: Ahora probamos a introducir en la URL del navegador: Tras esto volvemos a cargar esa URL y veremos que entramos en un post con contenido al que aún le falta la imagen:
  • 8. Tras añadir imágenes a la carpeta /web/images, y modificar el archivo screen.css en la carpeta css (que ya teníamos creada anteriormente), el resultado es el siguiente: Ahora hay que modificar el archivo Blog.php, para registrar sellos temporales del momento de la persistencia en la base de datos:
  • 9. Introducimos este constructor y función para que la aplicación la ejecute antes de hacer persistentes los datos en la base de datos (@ORMPreUpdate): Y volvemos a cargar los datos:
  • 10. A continuación tenemos que cambiar el index del Page (Blogger/BlogBundle/Resources/views/Page/index.html.twig) para poder mostrar todas las entradas en la página principal. Vamos ahora al PageController (Blogger/BlogBundle/Controller/PageController.php):
  • 11. Ahora vemos que en nuestra home se enumeran todas las entradas. Ahora vamos a la entidad Blog (Blog.php), vemos que la función getBlog devuelve blog. Tenemos que modificarlo de la siguiente manera: Esto sirve para poder determinar o limitar el número de caracteres de cada entrada que sacamos en el listado del home. Tras esto volvemos a la plantilla index.html.twig, y en la llamada a la entidad Blog podemos pasarle como parámetro la longitud de la entrada.
  • 12. Ahora vamos a separar la consulta doctrine del controlador, para poder reutilizarla en cualquier momento sin tener que acceder al controlador. Para ello trabajaremos con repositorios, un script donde pondremos todas las consultar doctrine. Dentro de la carpeta Entity creamos una carpeta Repository y dentro creamos BlogRepository.php con el siguiente contenido:
  • 13. Y ahora cambiamos en el PageController la consulta por una llamada al repositorio:
  • 14. Ahora vamos a trabajar los comentarios. Como un comentario es de un blog pero un blog tiene muchos comentarios esto se trabaja con anotaciones. En primer lugar creo la entidad Comment en la carpeta Entity.
  • 15. Y en la entidad Blog: php bin/console doctrine:generate:entities Blogger Tras esto me ha debido crear todos los métodos de acceso en la clase Comment. Hacemos persistentes las clases en la base de datos, lo haremos con migraciones.
  • 16. Y veremos que se ha generado automáticamente la tabla de comentarios en nuestra base de datos: Lo siguiente es cargar los comentarios. Para ello tenemos que llevarnos el fichero a DataFixtures y después hacer un load.
  • 17. Añadiendo al final también:
  • 18. Ahora en la clase CommentRepository.php (creada automaticamente) añadimos: Ahora en BlogController.php cambiamos:
  • 19. Ahora cambiamos la plantilla show.html.twig: Creamos en la carpeta views otra carpeta llamada Comment, con un archivo index en su interior con el siguiente contenido: Y ya podremos ver los comentarios en cada entrada:
  • 20. Ahora vamos a implementar la funcionalidad para añadir comentarios. Para esto tenemos que generar un formulario con Doctrine. Se debe haber creado la clase con el siguiente contenido: Necesitaremos un controlador para manejar este formulario. Para ello añadimos una nueva ruta:
  • 21. Ahora tenemos que crear el CommentController.php: Nota: Los parámetros de this→createForm en funcion createAction deben ser igual que en newAction.
  • 22. Ahora creamos la vista form.html.twig en la ruta especificada: Ahora creamos la vista create.html.twig: Ahora hay que modificar el show.html.twig:
  • 23. Y ya podemos añadir comentarios: Podemos hacer que la vista de cada entrada en el home ofrezca info relativa al número de comentarios que tiene esta entrada, e incluso convertir ese número en un enlace que nos lleve directamente a esos comentarios en la entrada. Para ello tenemos que modificar el index.html.twig del views/Page: Vemos como dentro del href de la etiqueta <a> indicamos la ruta de la entrada del blog e incluso con “#comments” indicamos que el navegador haga scroll vertical hasta llegar a la zona de los comentarios. Posteriormente, añadimos el texto de la etiqueta <a>, que será la longitud del array de comentarios.
  • 24. Ahora vamos a implementar la barra lateral. Para ello añadimos en BlogRepository.php: Y también: Ahora vamos al PageController.php y añadimos:
  • 25. Creamos sidebar.css en web/css con el siguiente contenido: Creamos en Resources/views/Page el sidebar.html.twig: Y por último en el layout.html.twig:
  • 26. Finalmente tenemos: Ahora para añadir a la barra lateral los comentarios más recientes tenemos que hacer lo siguiente: Añadimos en el CommentRepository.php: Ahora vamos al PageController.php y modificamos el sidebarAction:
  • 27. Ahora en el config.yml (dentro de app/config/) incluimos: En el sidebar.html.twig añadimos: Y vemos que el blog ha cambiado: