Drupal Camp México 2014
Jorge Antonio Atempa Camacho / @atempa09
Estudiante de Maestría en Ingeniería Electrónica en el Instituto Tecnológico de Mexicali.
Es un framework para el desarrollo de aplicaciones web en lenguaje PHP. Genéricamente, un framework es un conjunto de herramientas, librerías, convenciones y buenas prácticas que pretenden encapsular las tareas repetitivas en módulos genéricos fácilmente reutilizables.
1. $ sudo apt-get install apache2 mysql-server php5 2. $ sudo apt-get install git-core curl 3. $ sudo apt-get install php-apc php5-intl php5-mysql
Es una herramienta para gestionar las dependencias de proyectos desarrollados en PHP. La instalación mediante Composer, es la forma recomendada oficialmente.
1. $ curl -s https://getcomposer.org/installer | php 2. $ sudo mv composer.phar /usr/local/bin/composer 3. $ composer
$ composer create-project symfony/framework-standard-edition "directorio" 2.3.x-dev
Un bundle es un concepto similar al de los plugins en otras aplicaciones, pero todavía mejor. La diferencia clave es que en Symfony todo es un bundle, incluyendo tanto la funcionalidad básica de la plataforma como el código escrito para tu aplicación.
1. $ php app/console generate:bundle 2. $ php app/console generate:bundle --namespace=Acme/Bundle/BlogBundle 3. $ php app/console generate:bundle --bundle-name=AcmeBlogBundle 4. $ php app/console generate:bundle --dir=/var/www/myproject/src 5. $ php app/console generate:bundle --format=annotation
$ php app/console generate:bundle --namespace=ITM/AlumnosBundle --bundle-name=AlumnosBundle --dir=src/ --format=yml --no-interaction $ php app/console generate:bundle --namespace=ITM/CarrerasBundle --bundle-name=CarrerasBundle --dir=src/ --format=yml --no-interaction
En el repositorio:
$ git checkout parte-1
Doctrine es un ORM (Object Relational Mapper), escrito en PHP. Un ORM, es un mecanismo que permite comunicar dos sistemas distintos, típicamente una base de datos relacional con objetos de un lenguaje orientado a objetos.
Con el apoyo de Doctrine, Symfony integra comandos para trabajar con base de datos:
/* Crear una base de datos */ $ php app/console doctrine:database:create /* Eliminar una base de datos */ $ php app/console doctrine:database:drop --force /* Crear un esquema de base de datos */ $ php app/console doctrine:schema:create /* Presentar la serie de consultas SQL necesarias para realizar una acción. */ $ php app/console doctrine:schema:create --dump-sql /* Eliminar un esquema de base de datos */ $ php app/console doctrine:schema:drop --force /* Actualizar un esquema de base de datos */ $ php app/console doctrine:schema:update /* Generar un CRUD a partir de una entidad */ $ php app/console doctrine:generate:crud
Una manera de generar las entidades en Symfony automáticamente es la siguiente:
$ php app/console doctrine:generate:entity --entity="AlumnosBundle:Alumnos" --fields="nocontrol:string(15) nombre:string(36) apellido_paterno:string(45) apellido_materno:string(45) carrera:int(11)" --no-interaction
$ php app/console doctrine:generate:entity --entity="CarrerasBundle:Carreras" --fields="nombre:string(60)" --no-interaction
Establecer manualmente la relación entre las entidades.
... /** * Alumnos * * @ORM\Table("alumnos") * @ORM\Entity */ class Alumnos { ... /** * @ORM\ManyToOne(targetEntity="ITM\CarrerasBundle\Entity\Carreras") * @ORM\JoinColumn(name="carrera", referencedColumnName="id") */ private $carrera; }
Modificar los métodos get y set:
... class Alumnos { ... /** * Set carrera * * @param \ITM\CarrerasBundle\Entity\Carreras $carrera * @return Alumnos */ public function setCarrera(\ITM\CarrerasBundle\Entity\Carreras $carrera) { $this->carrera = $carrera; } /** * Get carrera * * @return \ITM\CarrerasBundle\Entity\Carreras */ public function getCarrera() { return $this->carrera; } ... }
Agregar el método mágico toString()
/** * Carreras * * @ORM\Table("carreras") * @ORM\Entity */ class Carreras { ... public function __toString() { return $this->getNombre(); } }
En el repositorio:
$ git checkout parte-2
Generando un controlador CRUD basado en una entidad de Doctrine.
$ php app/console doctrine:generate:crud
En el repositorio:
$ git checkout parte-3
Agregar en el archivo composer.json lo siguiente:
"require": { ... "doctrine/doctrine-fixtures-bundle": "dev-master", "doctrine/data-fixtures": "dev-master" },
Actualizar composer.json:
$ composer update
Registrar en el AppKernel.
public function registerBundles() { $bundles = array( ... new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(), );
Cargar datos de prueba:
$ php app/console d:f:l
En el repositorio:
$ git checkout parte-4
Un framework CSS es un conjunto de herramientas, hojas de estilos y buenas prácticas que permiten al diseñador web olvidarse de las tareas repetitivas para centrarse en los elementos únicos de cada diseño en los que puede aportar valor.
$ php app/console assets:installPara heredar de la plantilla css utiliza la siguiente línea desde tu plantilla app/Resources/views/frontend.twig.html
En el repositorio:
$ git checkout parte-5
Desarrollar la página web de la División de Estudios de Posgrado e Investigación. Utilizando el patrón de arquitecturaModelo-Vista-Controlador (MVC).