SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
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:

Contenu connexe

Tendances

Tutorial de jpa para windows usando net beans y mysql parte 1
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
Henry Mendoza Puerta
 
ConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En NetbeansConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En Netbeans
guest044583b
 
Eclipse para novatos java
Eclipse para novatos javaEclipse para novatos java
Eclipse para novatos java
martaferrari
 
Crear una base de datos mysql con un script de sql
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 Garay
 
Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2
mtemarialuisa
 
Reportes en java con i report y netbeans
Reportes en java con i report y netbeansReportes en java con i report y netbeans
Reportes en java con i report y netbeans
hernanluis
 

Tendances (20)

Tutorial de persistencia en java con postgresql
Tutorial de persistencia en java con  postgresqlTutorial de persistencia en java con  postgresql
Tutorial de persistencia en java con postgresql
 
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...
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
 
Tutorial de jpa para windows usando net beans y mysql parte 1
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
Tutorial git comandos rafael mirandaibanezTutorial git comandos rafael mirandaibanez
Tutorial git comandos rafael mirandaibanez
 
Laravel vc
Laravel vcLaravel vc
Laravel vc
 
ConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En NetbeansConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En Netbeans
 
Eclipse para novatos java
Eclipse para novatos javaEclipse para novatos java
Eclipse para novatos java
 
Reportes
ReportesReportes
Reportes
 
Tutorial net beans
Tutorial net beansTutorial net beans
Tutorial net beans
 
Crear una base de datos mysql con un script de sql
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
 
File
FileFile
File
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
Reporte Java con JasperReport
Reporte Java con JasperReportReporte Java con JasperReport
Reporte Java con JasperReport
 
Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier Aznar
 
Power point report
Power point reportPower point report
Power point report
 
Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2
 
Reportes en java con i report y netbeans
Reportes en java con i report y netbeansReportes en java con i report y netbeans
Reportes en java con i report y netbeans
 
Integración de Netbeans con Ireport y SQL Server
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
 
Ruby on Rails Workshop
Ruby on Rails WorkshopRuby on Rails Workshop
Ruby on Rails Workshop
 
Tutorial eclipse
Tutorial eclipseTutorial eclipse
Tutorial eclipse
 

En vedette

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
850-0490-00 Rev A-Oscillatory MAP ABP Case Study
Christina Mason
 

En vedette (14)

The Art Of The Titles Reseach
The Art Of The Titles ReseachThe Art Of The Titles Reseach
The Art Of The Titles Reseach
 
Shooting schedule
Shooting schedule  Shooting schedule
Shooting schedule
 
Instalacion symfony2
Instalacion symfony2Instalacion symfony2
Instalacion symfony2
 
Toyota presentation
Toyota presentationToyota presentation
Toyota presentation
 
Questionnaire Results
Questionnaire ResultsQuestionnaire Results
Questionnaire Results
 
Evaluation Question Three- what have you learned from your audience feedback?
Evaluation Question Three- what have you learned from your audience feedback?Evaluation Question Three- what have you learned from your audience feedback?
Evaluation Question Three- what have you learned from your audience feedback?
 
Shots and angles
Shots and anglesShots and angles
Shots and angles
 
Completando blog
Completando blogCompletando blog
Completando blog
 
The History of Music
The History of MusicThe History of Music
The History of Music
 
My music video idea
My music video ideaMy music video idea
My music video idea
 
Doctrine symfony
Doctrine symfonyDoctrine symfony
Doctrine symfony
 
Local Citation Management
Local Citation ManagementLocal Citation Management
Local Citation Management
 
High Budget Institutions
High Budget InstitutionsHigh Budget Institutions
High Budget Institutions
 
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
850-0490-00 Rev A-Oscillatory MAP ABP Case Study
 

Similaire à Doctrine symfony

WPF Series - 01
WPF Series - 01WPF Series - 01
WPF Series - 01
kazcorp
 
Funciones definidas por_el_usuario_y_variables_superglobales
Funciones definidas por_el_usuario_y_variables_superglobalesFunciones definidas por_el_usuario_y_variables_superglobales
Funciones definidas por_el_usuario_y_variables_superglobales
CarlosUribe93
 
Webbrowser de vb 6.0 y vb.net
Webbrowser de vb 6.0 y vb.netWebbrowser de vb 6.0 y vb.net
Webbrowser de vb 6.0 y vb.net
adezhiz
 

Similaire à Doctrine symfony (20)

Conociendo el Patron Modelo Vista Controlador
Conociendo el Patron   Modelo Vista ControladorConociendo el Patron   Modelo Vista Controlador
Conociendo el Patron Modelo Vista Controlador
 
Vistiendo a WordPress
Vistiendo a WordPressVistiendo a WordPress
Vistiendo a WordPress
 
WPF Series - 01
WPF Series - 01WPF Series - 01
WPF Series - 01
 
Creación de un sitio web en wordpress
Creación de un sitio web en wordpressCreación de un sitio web en wordpress
Creación de un sitio web en wordpress
 
Guia basica de ruby on rails
Guia basica de ruby on railsGuia basica de ruby on rails
Guia basica de ruby on rails
 
Hands on Lab: Almacenamiento local con base de datos, launchers y choosers
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
 
Practica Web Sesión 5
Practica Web Sesión 5Practica Web Sesión 5
Practica Web Sesión 5
 
Mi app-asp-net-mvc2
Mi app-asp-net-mvc2Mi app-asp-net-mvc2
Mi app-asp-net-mvc2
 
Como crear blog
Como crear blogComo crear blog
Como crear blog
 
Computación avanzada en java cert
Computación avanzada en java certComputación avanzada en java cert
Computación avanzada en java cert
 
Alojar un dominio en servidor propio e instalar Wordpress
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
 
Funciones
FuncionesFunciones
Funciones
 
Linq to sql 8
Linq to sql 8Linq to sql 8
Linq to sql 8
 
Mvc
MvcMvc
Mvc
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Funciones definidas por_el_usuario_y_variables_superglobales
Funciones definidas por_el_usuario_y_variables_superglobalesFunciones definidas por_el_usuario_y_variables_superglobales
Funciones definidas por_el_usuario_y_variables_superglobales
 
Instructivo themewordpress
Instructivo themewordpressInstructivo themewordpress
Instructivo themewordpress
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
Webbrowser de vb 6.0 y vb.net
Webbrowser de vb 6.0 y vb.netWebbrowser de vb 6.0 y vb.net
Webbrowser de vb 6.0 y vb.net
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 

Plus de rmirandaibanez

Control de versiones en eclipse
Control de versiones en eclipseControl de versiones en eclipse
Control de versiones en eclipse
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"
Detalle de creación "Mi primera base de datos"
rmirandaibanez
 

Plus de rmirandaibanez (20)

Instalación Android Studio
Instalación Android StudioInstalación Android Studio
Instalación Android Studio
 
Tutorial git comandos
Tutorial git comandosTutorial git comandos
Tutorial git comandos
 
Control de versiones en eclipse
Control de versiones en eclipseControl de versiones en eclipse
Control de versiones en eclipse
 
Control de versiones en eclipse
Control de versiones en eclipseControl de versiones en eclipse
Control de versiones en eclipse
 
Sisinf practica1 requerimientos_so
Sisinf practica1 requerimientos_soSisinf practica1 requerimientos_so
Sisinf practica1 requerimientos_so
 
Caso transformacion modelo ei modelo relacional
Caso transformacion modelo ei   modelo relacionalCaso transformacion modelo ei   modelo relacional
Caso transformacion modelo ei modelo relacional
 
Reglas conversión modelo relacional esquema
Reglas conversión modelo relacional esquemaReglas conversión modelo relacional esquema
Reglas conversión modelo relacional esquema
 
Caso transformacion modelo EI - modelo relacional
Caso transformacion modelo EI - modelo relacionalCaso transformacion modelo EI - modelo relacional
Caso transformacion modelo EI - modelo relacional
 
Caso transformacion modelo EI - Modelo relacional
Caso transformacion modelo EI - Modelo relacionalCaso transformacion modelo EI - Modelo relacional
Caso transformacion modelo EI - Modelo relacional
 
Ejercicio vlsm complejo
Ejercicio vlsm complejoEjercicio vlsm complejo
Ejercicio vlsm complejo
 
Reglas conversión modelo relacional
Reglas conversión modelo relacionalReglas conversión modelo relacional
Reglas conversión modelo relacional
 
Instalación Eclipse. Básico
Instalación Eclipse. BásicoInstalación Eclipse. Básico
Instalación Eclipse. Básico
 
Java - Metodos - Iterativo
Java - Metodos - IterativoJava - Metodos - Iterativo
Java - Metodos - Iterativo
 
Documentación practica 2
Documentación practica 2Documentación practica 2
Documentación practica 2
 
Cuestionarios SGBD y arboles B+
Cuestionarios SGBD y arboles B+Cuestionarios SGBD y arboles B+
Cuestionarios SGBD y arboles B+
 
Introducción a lenguajes de programación
Introducción a lenguajes de programaciónIntroducción a lenguajes de programación
Introducción a lenguajes de programación
 
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"
Detalle de creacion de "Mi primera base de datos"
 
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"
Detalle de creación "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"Detalle de elaboración de "Mi primera base de datos"
Detalle de elaboración de "Mi primera base de datos"
 
1ª práctica Lenguaje Marcas. Ejemplo 1
1ª práctica Lenguaje Marcas. Ejemplo 11ª práctica Lenguaje Marcas. Ejemplo 1
1ª práctica Lenguaje Marcas. Ejemplo 1
 

Dernier

Letra de cambio definición y características.ppt
Letra de cambio definición y características.pptLetra de cambio definición y características.ppt
Letra de cambio definición y características.ppt
ssuserbdc329
 
Conversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoConversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latino
BESTTech1
 
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
IrapuatoCmovamos
 
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIAL
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIALINFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIAL
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIAL
MANUELVILELA7
 

Dernier (20)

Sistema Nacional de Vigilancia en Salud Pública SIVIGILA
Sistema Nacional de Vigilancia en Salud Pública SIVIGILASistema Nacional de Vigilancia en Salud Pública SIVIGILA
Sistema Nacional de Vigilancia en Salud Pública SIVIGILA
 
data lista de ingresantes de la universidad de ucayali 2024.pdf
data lista de ingresantes de la universidad de ucayali 2024.pdfdata lista de ingresantes de la universidad de ucayali 2024.pdf
data lista de ingresantes de la universidad de ucayali 2024.pdf
 
Las familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdfLas familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdf
 
Letra de cambio definición y características.ppt
Letra de cambio definición y características.pptLetra de cambio definición y características.ppt
Letra de cambio definición y características.ppt
 
ROMA Y EL IMPERIO, CIUDADES ANTIGUA ROMANAS
ROMA Y EL  IMPERIO, CIUDADES  ANTIGUA ROMANASROMA Y EL  IMPERIO, CIUDADES  ANTIGUA ROMANAS
ROMA Y EL IMPERIO, CIUDADES ANTIGUA ROMANAS
 
Los idiomas más hablados en el mundo (2024).pdf
Los idiomas más hablados en el mundo  (2024).pdfLos idiomas más hablados en el mundo  (2024).pdf
Los idiomas más hablados en el mundo (2024).pdf
 
Conversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoConversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latino
 
6.3 Hidrologia Geomorfologia Cuenca.pptx
6.3 Hidrologia Geomorfologia Cuenca.pptx6.3 Hidrologia Geomorfologia Cuenca.pptx
6.3 Hidrologia Geomorfologia Cuenca.pptx
 
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
 
La Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdfLa Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdf
 
Adultos Mayores más de 60 años como de la población total (2024).pdf
Adultos Mayores más de 60 años como  de la población total (2024).pdfAdultos Mayores más de 60 años como  de la población total (2024).pdf
Adultos Mayores más de 60 años como de la población total (2024).pdf
 
EPIDEMIO CANCER PULMON resumen nnn.pptx
EPIDEMIO CANCER PULMON  resumen nnn.pptxEPIDEMIO CANCER PULMON  resumen nnn.pptx
EPIDEMIO CANCER PULMON resumen nnn.pptx
 
variables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpointvariables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpoint
 
aine-2014.pdf/tipos de aines-clasificación
aine-2014.pdf/tipos de aines-clasificaciónaine-2014.pdf/tipos de aines-clasificación
aine-2014.pdf/tipos de aines-clasificación
 
PRESENTACIÓN DR. ÓSCAR CABRERA - Visión Económica de El Salvador.pptx
PRESENTACIÓN DR. ÓSCAR CABRERA - Visión Económica de El Salvador.pptxPRESENTACIÓN DR. ÓSCAR CABRERA - Visión Económica de El Salvador.pptx
PRESENTACIÓN DR. ÓSCAR CABRERA - Visión Económica de El Salvador.pptx
 
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIAL
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIALINFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIAL
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIAL
 
max-weber-principales-aportes de la sociologia (2).pptx
max-weber-principales-aportes de la sociologia (2).pptxmax-weber-principales-aportes de la sociologia (2).pptx
max-weber-principales-aportes de la sociologia (2).pptx
 
02 protocolo en caso de robo o asalto.pdf
02 protocolo en caso de robo o asalto.pdf02 protocolo en caso de robo o asalto.pdf
02 protocolo en caso de robo o asalto.pdf
 
MARCO TEORICO, SEMINARIO DE INVESTIGACION,
MARCO TEORICO, SEMINARIO DE INVESTIGACION,MARCO TEORICO, SEMINARIO DE INVESTIGACION,
MARCO TEORICO, SEMINARIO DE INVESTIGACION,
 
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docxAMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
 

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: