Entradas etiquetadas: Blog

[Parte 3] El modelo del Blog: Usando Doctrine 2 y accesorio

Symfony, Tutoriales

Este post es la parte 3 de 6 del artículo: Creando un Blog con Symfony2

Debido a que la web de udelabs lleva varías semanas sin funcionar a petición de un par de usuarios me tomo la libertad de subir el tutorial traducido por ellos, quizás con alguna modificación que iba haciendo pero todos los méritos son de ellos.Tutorial en inglés 

Descripción

En este capítulo comenzaremos a explorar el modelo del blog. Implementaremos el modelo con el Object Relation Mapper (ORM o Asignador Objeto↔Relacional) Doctrine 2Doctrine 2 nos proporciona la persistencia de nuestros objetos PHP. También proporciona un dialecto SQL llamado Doctrine Query Language (DQL o lenguaje de consulta doctrine). Además de Doctrine 2, también introduciremos el concepto de datos de prueba. Los datos de prueba (en adelante: accesorios) son un mecanismo para llenar nuestras bases de datos de desarrollo y probar con datos de prueba adecuados. Al final de este capítulo habrás definido el modelo del blog, actualizando la base de datos para reflejar el nuevo modelo, y creado algunos accesorios. También habremos construido las bases para la página show del blog.

Doctrine 2: El modelo

Para que funcione nuestro blog necesitamos una manera de guardar los datos. Doctrine 2 proporciona un ORM diseñado exactamente para este propósito. El ORM de Doctrine 2 se encuentra en lo alto de una potente Capa de abstracción de base de datos que nos da la abstracción de almacenamiento a través del PDO de PHP. Esto nos permite utilizar una serie de distintos motores de almacenamiento, incluyendoMySQLPostgreSQL y SQLite. Vamos a utilizar MySQL para nuestro motor de almacenamiento, pero, lo puedes sustituir por cualquier otro motor que desees.

Si no estás familiarizado con algún ORM, vamos a explicar su principio básico. La definición en Wikipedia dice:
“Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a “virtual object database” that can be used from within the programming language.”
En la que las habilidades del ORM traducen desde datos de una base de datos relacional como MySQL en objetos PHP que podemos manipular. Esto nos permite encapsular la funcionalidad que necesitamos en una tabla dentro de una clase. Piensa en una tabla de usuarios, probablemente esta tenga campos como usernamepasswordfirst_namelast_nameemail y dob (siglas de day of birth o en Español “fecha de nacimiento”). Con un ORM esta se convierte en una clase con las propiedades usernamepasswordfirst_name, etc., que nos permite llamar a métodos tales como getUsername() y setPassword(). Los ORMvan mucho más allá de esto, sin embargo, también son capaces de recuperar tablas relacionadas para nosotros, ya sea al mismo tiempo que recupera el objeto usuario, o de manera diferida en el futuro. Ahora, consideremos que nuestro usuario tiene algunos amigos con los que está relacionado. Para ello deberíamos tener una tabla de amigos, almacenando la clave primaria de la tabla usuario dentro de ella. Usando elORM ahora podríamos hacer una llamada como $user->getFriends() para recuperar objetos de la tabla de amigos. Si eso no es suficiente, el ORM también se ocupa de guardarlos por lo tanto puedes crear objetos en PHP, llamar a un método como save() y permitir que el ORM se ocupe de los detalles de en realidad persistir los datos en la base de datos. Debido a que estamos usando el ORM de Doctrine 2, te familiarizarás mucho más con lo que es un ORM a medida que avancemos a través de esta guía.
Si bien en esta guía utilizaremos el ORM de Doctrine 2, puedes optar por usar la biblioteca Object Document Mapper (ODM o Asignador Objeto↔Documento) de Doctrine 2. Hay una serie de variaciones de esta biblioteca incluyendo implementaciones de MongoDB y CouchDB. Ve la página del Proyecto Doctrine para más información.
También hay un artículo en el recetario que explica cómo configurar el ODM con Symfony2.

Leer más »

[Parte 2] Página de contacto: Validadores, formularios y correo electrónico

Symfony, Tutoriales

Este post es la parte 2 de 6 del artículo: Creando un Blog con Symfony2

Debido a que la web de udelabs lleva varías semanas sin funcionar a petición de un par de usuarios me tomo la libertad de subir el tutorial traducido por ellos, quizás con alguna modificación que iba haciendo pero todos los méritos son de ellos.Tutorial en inglés 

Descripción

Ahora que tenemos en su lugar las plantillas HTML básicas, es hora de hacer una de las páginas funcionales. Vamos a empezar con una de las páginas más simples; La página de Contacto. Al final de este capítulo tendrás una página de Contacto que permite a los usuarios enviar sus consultas al administrador del sitio. Estas consultas serán enviadas por correo electrónico al administrador del sitio.

En este capítulo cubriremos las siguientes áreas:

  1. Validadores
  2. Formularios
  3. Ajuste de los valores de configuración del paquete

[Parte 1] Configurando Symfony2 y sus plantillas

Symfony, Tutoriales

Este post es la parte 1 de 6 del artículo: Creando un Blog con Symfony2

Debido a que la web de udelabs lleva varías semanas sin funcionar a petición de un par de usuarios me tomo la libertad de subir el tutorial traducido por ellos, quizás con alguna modificación que iba haciendo pero todos los méritos son de ellos. Tutorial en inglés

Descripción

Este capítulo cubre los primeros pasos para crear un sitio web Symfony2. Descargaremos y configuraremos la Edición estándar de Symfony2, crearemos el paquete del Blog y adjuntaremos las principales plantillasHTML. Al final de este capítulo habremos configurado un sitio web Symfony2 que estará disponible a través de un dominio local, por ejemplo, http://symblog.dev/. El sitio web contendrá la estructura HTMLprincipal del blog junto con algún soso contenido.

En este capítulo cubriremos las siguientes áreas:

  1. La creación de una aplicación Symfony2
  2. Configurando un dominio de desarrollo
  3. Los paquetes de Symfony2
  4. El enrutado
  5. Los controladores
  6. Las plantillas con Twig

Como hemos dicho vamos a utilizar la edición estándar de Symfony2. Esta distribución viene con las bibliotecas del núcleo de Symfony2 y los paquetes más comunes que se requieren para crear sitios web. Puedes descargar el paquete de Symfony2 de su sitio web. Puesto que no quiero repetir la excelente documentación proporcionada por el libro de Symfony2, por favor consulta el capítulo de la Instalación y configuración de Symfony2 para ver los requisitos detallados. Esto te guiará en el proceso de cuál es el paquete a descargar, cómo instalar los proveedores necesarios, y la forma correcta de asignar permisos a los directorios.

Es importante prestar especial atención a la sección Configuración de Permisos en el capítulo de instalación. Este explica las distintas formas en que puedes asignar permisos a los directorios app/cache yapp/logs para que el usuario del servidor web y el usuario de línea de ordenes tengan acceso de escritura a ellos.

Leer más »

Creando un blog en Symfony2

Symfony

Rebuscando por la red por tutoriales o algo explicado para torpes para hacer en symfony2 me encontré con un tutorial muy bueno de como crear un blog, aparentemente está sin terminar pero los 6 capítulos de los que dispone son suficientes a mi parecer para entrar en la rutina de la programación en este framework.

Lo único que falta y que se supone que estará en el capítulo 7 si sale a la luz es la parte de los usuarios usando FOSUserBundle que podría estar muy interesante.

El tutorial está en inglés pero afortunadamente gracias a Lisper tenemos la traducción al español. La misma persona que esta traduciendo la documentación de Symfony2 en su página web. Desgraciadamente la web está muchas veces caída así que os aconsejo que si queréis trastear por ejemplo con el blog que os guardéis la página por si cuando vayáis a realizar ese tema con toda vuestra ilusión os encontráis que esta caída como me paso a mi… afortunadamente gracias a la cache de google puede ponerme a ello :)