Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos

Post on 15-Jan-2015

34.442 views 2 download

description

Instalación y primeros pasos fue la primera ponencia impartida durante las Jornadas Symfony 2011. Se trata de la primera parte de las seis que forman el tutorial de desarrollo de la aplicación github.com/desymfony. Durante la misma se explIca cómo instalar y configurar Symfony2, cómo instalar el proyecto deSymfony, cómo crear los bundles con el generador interactivo y también se introduce el funcionamiento de la arquitectura MVC en Symfony2 mediante la programación de la parte dedicada a mostrar las páginas estáticas de la aplicación.

Transcript of Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos

JORNADAS SYMFONY 2011 están patrocinadas porPa

troc

inad

ores

PL

ATIN

O y

ORO

Patr

ocin

ador

es

PLAT

APa

troc

inad

ores

BR

ONCE

Cola

bora

dore

s

Algunas partes de esta presentación no se pueden entender bien sin ver el vídeo de su impartición.

Puedes acceder al vídeo enhttp://bit.ly/sf-tutorial1

importante

La idea

« Desarrollar una versión ficticia del sitio

desymfony.com »

portada

portada ponencias

detalle ponencia

portada ponentes

formulario registro

usuario conectado

administración

github.com/desymfony

El desarrollo

1. Instalación

2. Modelo y Doctrine2

3. Vista y Twig

4. Formularios y seguridad

5. Backend

6. Assetic y Tests

InstalandoSymfony2

1

symfony.com/download

2CON vendors SIN vendors

.ZIP 5.3 MB 0.1 MB

.TGZ 2.7 MB 0.1 MB

2CON vendors SIN vendors

.ZIP 5.3 MB 0.1 MB

.TGZ 2.7 MB 0.1 MB

DOWNLOAD

3

descomprimir

http://localhost/symfony

1

symfony.com/download

2CON vendors SIN vendors

.ZIP 5.3 MB 0.1 MB

.TGZ 2.7 MB 0.1 MB

2CON vendors SIN vendors

.ZIP 5.3 MB 0.1 MB

.TGZ 2.7 MB 0.1 MB

DOWNLOAD

3

descomprimir

4

cd <directorio_symfony>

php bin/vendors install

SI

NO

CON vendors

SIN vendors

¿Usas y te sientes cómodo con

Git?

Configurador web

Configurar el proyecto vía web

EN LA PRÁCTICA

Instalando elproyecto

deSymfony

1

mkdir proyecto

2

git clonegit@github.com:desymfony/desymfony.git proyecto

3

proyecto/bin/vendors install

git checkout !b tutorial1 origin/tutorial1

Bundles

1 Proyecto

2 Aplicaciones

X Módulos

Y Plugins

1 Proyecto

1 Aplicación

X Bundles

bundle

« Conjunto de archivos que implementan una única funcionalidad »

src/Desymfony

PonenciaBundle

PonenteBundle

UsuarioBundle

ComunBundle

src/Desymfony

DesymfonyBundle

src/Desymfony

DesymfonyBundle

Controller

Entity

Form

Resources

Desymfony / SitiosWeb / DesymfonyBundle

Desymfony / SitiosWeb / DesymfonyBundle

• Tu empresa

• El proyecto

• Tu cliente

VENDOR

Desymfony / SitiosWeb / DesymfonyBundle

• Tu empresa

• El proyecto

• Tu cliente

VENDOR CATEGORÍA(opcional)

Desymfony / SitiosWeb / DesymfonyBundle

• Tu empresa

• El proyecto

• Tu cliente

VENDOR CATEGORÍA(opcional)

NOMBRE

{OBLIGATORIO

Desymfony / DesymfonyBundle

Crear el bundle con el generador interactivo

EN LA PRÁCTICA

Creando la primera página

desymfony / contacto

enrutamiento

Controlador

enrutamiento

Controlador BD

Modelo

enrutamiento

Controlador

Vista

BD

Modelo

enrutamiento

Crear la página de contacto

EN LA PRÁCTICA

Crear todas las páginas estáticas del sitio

EN LA PRÁCTICA

Introducir el profiler y la barra de depuración web

EN LA PRÁCTICA

Namespaces

Antes de

symfony 1<?php

include './comun/db.php';

require './comun/utilidades.php';

$articulo = Doctrine::getTable('Articulo')->...

Aplicaciones

symfony 1<?php

$articulo = Doctrine::getTable('Articulo')->...

Aplicaciones

Symfony2<?php

use Desymfony\DesymfonyBundle\Entity\Articulo;

$articulo = new Articulo();

src/Desymfony/DesymfonyBundle

Entity

Ponencia

Ponente

Usuario

src/Desymfony/DesymfonyBundle/Entity/

Ponencia.php<?php

namespace Desymfony\DesymfonyBundle\Entity;

...

src/Desymfony/DesymfonyBundle/Controller/

PortadaController.php<?php

public function portadaAction() {

$ponencia = new Ponencia();

...}

<?phpuse Desymfony\DesymfonyBundle\Entity;

public function portadaAction() {

...}

src/Desymfony/DesymfonyBundle/Controller/

PortadaController.php

<?phpuse Desymfony\DesymfonyBundle\Entity;

public function portadaAction() {

...}

src/Desymfony/DesymfonyBundle/Controller/

PortadaController.php

$ponencia = new Entity\Ponencia();

<?phpuse Desymfony\DesymfonyBundle\Entity as Entidad;

public function portadaAction() {

...}

src/Desymfony/DesymfonyBundle/Controller/

PortadaController.php

<?phpuse Desymfony\DesymfonyBundle\Entity as Entidad;

public function portadaAction() {

...}

src/Desymfony/DesymfonyBundle/Controller/

PortadaController.php

$ponencia = new Entidad\Ponencia();

<?php

public function portadaAction() {

$ponencia = new Ponencia();

...}

src/Desymfony/DesymfonyBundle/Controller/

PortadaController.php

<?php

public function portadaAction() {

$ponencia = new Ponencia();

...}

src/Desymfony/DesymfonyBundle/Controller/

PortadaController.php

use Desymfony\DesymfonyBundle\Entity\Ponencia;

Inyección de Dependencoas

<?php

public function portadaAction() {

$db = $this->get('doctrine')->...

...}

src/Desymfony/DesymfonyBundle/Controller/

PortadaController.php

<?php

public function portadaAction() {

$log = $this->get('logger')->...

...}

src/Desymfony/DesymfonyBundle/Controller/

PortadaController.php

<?php

public function portadaAction() {

$mailer = $this->get('mailer')->...

...}

src/Desymfony/DesymfonyBundle/Controller/

PortadaController.php

$this->get('mailer')->...

$this->container->get('mailer')->...

Contenedor de

Inyección de Dependencias

<?php

public function portadaAction() {

$this->get('mailer')->send($mensaje);

...}

<?php

public function portadaAction() {

$this->get('mailer')->send($mensaje);

...}

¿Qué mailer utilizar?Clase, métodos

<?php

public function portadaAction() {

$this->get('mailer')->send($mensaje);

...}

¿Qué mailer utilizar?Clase, métodos

¿Configuración?Servidor, puerto

swiftmailer: transport: smtp host: localhost username: ~ password: ~

app/config/

config.yml

<xsd:complexType name="config">

<xsd:attribute name="username" type="xsd:string" />

<xsd:attribute name="password" type="xsd:string" />

<xsd:attribute name="host" type="xsd:string" />

<xsd:attribute name="port" type="xsd:string" />

<xsd:attribute name="type" type="xsd:string" />

...

</xsd:complexType>

[...]/SwiftMailerBundle/[...]/schema/

swiftmailer-1.0.xsd

<container xmlns="..." xmlns:xsi="..." xsi:schemaLocation="..."> <parameters> <parameter key="swiftmailer.class"> Swift_Mailer </parameter>

...

[...]/SwiftMailerBundle/[...]/config/

swiftmailer.xml

<container xmlns="..." xmlns:xsi="..." xsi:schemaLocation="...">

<parameter key="swiftmailer.transport.smtp.class"> Swift_Transport_EsmtpTransport </parameter>

<call method="setHost"> <argument>%swiftmailer.transport.smtp.host%</argument> </call> <call method="setPort"> <argument>%swiftmailer.transport.smtp.port%</argument> </call>

[...]/SwiftMailerBundle/[...]/config/

swiftmailer.xml

¡Dame un mailer! Contenedor de

Inyección de Dependencias

¡Dame un mailer!

instrucciones para

crear mailersinstrucciones para

crear Doctrineinstrucciones para

crear loggers

Contenedor de Inyección de

Dependencias

¡Dame un mailer!

instrucciones para

crear mailersinstrucciones para

crear Doctrineinstrucciones para

crear loggers

Contenedor de Inyección de

Dependencias

1. Instalado Symfony2

2. Configurado Symfony2

3. Instalado deSymfony

4. Creado el bundle

5. Todas las páginas estáticas

javier.eguiluz@gmail.com

twitter.com/javiereguiluz

linkedin.com/in/javiereguiluz

contacto