miércoles, 19 de noviembre de 2014

Symfony2

Symfony

¿QUE ES SYMFONY?

Symfony es un framework PHP de tipo full-stack (pila completa) construido con varios componentes independientes creados por el proyecto Symfony.
Symfony2 es uno de los Framework más potentes que existen para desarrollar aplicaciones web.


características

Su código, y el de todos los componentes y librerías que incluye, se publican bajo la licencia MIT de software libre.
La documentación del proyecto también es libre e incluye varios libros y decenas de tutoriales específicos.
Aprender a programar con Symfony te permite acceder a una gran variedad de proyectos: el framework Symfony2 para crear aplicaciones complejas, el micro framework Silex para sitios web sencillos y los componentes Symfony para otras aplicaciones PHP.
Los componentes de Symfony son tan útiles y están tan probados, que proyectos tan gigantescos como Drupal 8 están construidos con ellos.

Estructura

Directorio app:
La finalidad de este directorio es alojar a los archivos PHP encargados de los procesos de   carga del   Framework y a toda la configuración general de la aplicación. Los archivos de   este directorio son los   encargados de unir y dar cohesión a los distintos componentes del   Framework.
Directorio src:
Este directorio contiene todo el código creado por el desarrollador para la aplicación.
Directorio vendor:
Este directorio contendrá todo aquel código que no pertenece al desarrollador de la   aplicación; es lo   que se conoce como librerías de terceros. También contiene los   componentes de Symfony2, el ORM   Doctrine2 y el sistema de plantillas twig.
Directorio web:
Este directorio contiene el controlador frontal (app_dev.php y app.php) y todos los Assets de la   aplicación: CSS's, Javascripts, imágenes.
app_dev.php: Es uno de los controladores frontales de la aplicación. Este controlador frontal es el utilizado para el desarrollo, para lo cual añade una barra de depuración que ofrece información sobre todo lo relacionado con la ejecución de la aplicación.

PROBLEMA A DESARROLLAR

Desarrollar un aplicativo que permita registrar estudiantes y que pertenezcan aun determinado programa, se necesita que el aplicativo permita editar, eliminar y listar los estudiantes registrados y os respectivos programas.

Configuración

Primero descargar xampp desde la pagina oficial: https://www.apachefriends.org/es/index.html, lo instalamos en la unidad c y damos servicio al xampp (apache y mysql).

agregar variables de entorno: carpeta php de xampp
Dentro de la carpeta php de xampp agregamos el archivo composer.bat




C:\xampp\php, para que en la consola se pueda reconocer el php como un comando.


clic derecho en equipo, propiedades


configuración avanzada del sistema

variables de entorno, path, editar, agregamos las variables de entorno y aceptar
Primero descargar: versión Symfony_Standard_Vendors_2.5.6.zip, superior o menor a la versiones anteriores.
Segundo: dentro de la carpeta htdocs de simfony creamos una carpeta y la llamaremos registro-estudiante como se muestra en la siguente imagen:
Dentro de la carpeta registro-estudiante descomprimimos Symfony_Standard_Vendors_2.5.6.zip y debe quedar de la siguiente manera:
Una ves realizado esto abrimos el símbolo del sistema (cmd), nos situamos en la carpeta donde se encuentra nuestra carpeta creada frameworks :\xampp\htdocs\registro-estudiante.
Una vez aquí ejecutamos el siguiente comando que es un entorno de trabajo, esto crea una carpeta que es donde se va a almacenar nuestro proyecto: php app/console generate:bundle
damos enter
Nos aparece un menú donde nos da opciones para la configuración del proyecto.
Donde dice Bundle namespace: escribimos Acme/RegistroBundle el Acme viene por defecto en symfony.
Debe quedar de la siguiente manera: 
damos enter
Después nos aparece esto donde le tenemos que dar enter: Bundle name [AcmeRegistroBundle]:
Despues nos pregunta donde estaría el directorio que es por defecto, le damos enter:
Nos pide un formato de configuración donde escogeremos annotation, le damos enter.
Después nos dice que si generamos una estructura del escritorio, le damos que si (yes) enter.
Que si confirmamos la generación si (yes), enter.
A estos pasos le decimos que si (yes).
Con esto ya tenemos un directorio creado de trabajo.
Ahora vamos a crear las entidades que vamos a trabajar, en este caso son: Estudiante y Programa.
Para ello escribimos el siguiente comando: php app/console doctrine:generate:entity
Lo primero que nos dice es que generemos un nombre para la entidad dentro del directorio de trabajo. Digitamos lo siguiente: AcmeRegistroBundle:Estudiante damos enter.

Nos pide el formato: digitamos annotation enter
Luego nos pide los campos que va a contener esta entidad.
Una aclaración, symfony por defecto nos crea los id de cada entidad, a si que no vamos a digitar el id.
Los campos que vamos a necesitar son lo siguiente: carnet, nombres, apellidos, fechaNacimiento de tipo date, semestre de tipo integer, dirección, teléfono, email,observaciones.
Si, no vamos a agregar mas campos le damos enter, confirmamos (yes), (yes).
Ahora vamos a crear la entidad, en este caso:  Programa.
Para ello escribimos el siguiente comando: php app/console doctrine:generate:entity
Lo primero que nos dice es que generemos un nombre para la entidad dentro del directorio de trabajo. Digitamos lo siguiente: AcmeRegistroBundle:Programa damos enter.
Nos pide el formato: digitamos annotation enter
Luego nos pide los campos que va a contener esta entidad.
Una aclaración, symfony por defecto nos crea los id de cada entidad, a si que no vamos a digitar el id.
Los campos que vamos a necesitar son lo siguiente: nombre.
Si no vamos a agregar mas campos le damos enter, confirmamos (yes), (yes).
El siguiente paso va ser relacionar las tablas que ya están creadas en el framework a una base de datos.
Pero antes de esto utilizaremos el siguiente comando para generar los set y los get de los campos de cada entidad o tabla: 
php app/console doctrine:generate:entities Acme
Ahora debemos crear una base de datos, por defecto nos crea una DB llamada symfony.
php app/console doctrine:database:créate
Con esto nos dice que ya tenemos creada una DB.
Lo podemos verificar en el localhost/phpmyadmin, en el momento no tiene ninguna tabla.
Ahora ejecutamos el siguiente comando para crear las tablas:
php app/console doctrine:schema:update –force
Verificamos
 Ahora si ya podemos crear una relación entre las dos tablas, escribimos lo siguiente:
Ya que symfony trabaja las entidades como una clase.
Podemos abrir cualquier editor de texto, en la entidad Estudiante digitamos lo siguiente:
Este código lo colocamos al final
/**
 *@ORM\ManyToOne(targetEntity="Programa", inversedBy="estudiantes")
 *@ORM\JoinColumn(name="programa_id", referencedColumnName="id")
 */
 protected $programa;
Ahora digitamos la entidad Programa
/**
*@ORM\OneToMany(targetEntity="Estudiante", mappedBy="programa")
*/
protected $estudiantes;
public function __construct(){
           //$this->estudiantes = new ArrayCollection();
            $this->estudiantes = new \Doctrine\Common\Collections\ArrayCollection();
 }
Ya hecho esto, ahora vamos a seguir con los siguientes comando que le dimos anteriormente.
Esto es para actualizar la base de datos.
Primero ejecutamos: php app/console doctrine:schema:update –force
Segundo ejecutamos: php app/console doctrine:generate:entities Acme
Ahora vamos a crear el crud, symfony permite crear el crud por comando, ejecutamos lo siguiente:
php app/console generate:doctrine:crud
Despues nos dice que escribamos el nombre de la tabla que vamos a generar el crud.
En este caso digitamos lo siguiente.  AcmeRegistroBundle:Programa
Confirmamos (yes) enter, annotation enter
Aquí damos enter, yes enter
Ahora vamos a crear el crud para la entidad Estudiante, ejecutamos lo siguiente:
php app/console generate:doctrine:crud
Despues nos dice que escribamos el nombre de la tabla que vamos a generar el crud.
En este caso digitamos lo siguiente.  AcmeRegistroBundle:Estudiante
Confirmamos (yes) enter, annotation enter
Aquí damos enter, yes enter
Ahora vamos al navegador y escribimos: localhost/registro-estudiante/web/app_dev.php/
Nos debe de aparecer lo siguiente:
Si te aparece esto es porque hemos hecho hasta ahora todo bien.
Ahora nuevamente digitamos en el navegador lo anterior pero le añadimos el nombre de la entidad, ya sea estudiante o programa.
localhost/registro-estudiante/web/app_dev.php/estudiante/
Debe de aparecer lo siguiente y le damos clic en créate a new entry para agregar un estudiante.

Agregamos estudiantes, los podemos editar, eliminar.
Ahora nuevamente digitamos en el navegador lo anterior pero le añadimos el nombre de la entidad, ya sea estudiante o programa.
localhost/registro-estudiante/web/app_dev.php/programa/
Debe de aparecer lo siguiente y le damos clic en créate a new entry para agregar un programa.

No hay comentarios:

Publicar un comentario