Está en la página 1de 86

Tutorial #1 Instalacin y

primeros pasos
Javier Eguiluz

JORNADAS SYMFONY 2011 1-3 JULIO, CASTELLN DESYMFONY.COM

Colaboradores

Patrocinadores
BRONCE

Patrocinadores
PLATA

Patrocinadores
PLATINO y ORO

JORNADAS SYMFONY 2011 estn patrocinadas por

importante
Algunas partes de esta presentacin
no se pueden entender bien sin ver
el vdeo de su imparticin.
Puedes acceder al vdeo en

http://bit.ly/sf-tutorial1

La idea

Desarrollar una
versin ficticia del sitio
desymfony.com

portada

portada ponencias

detalle ponencia

portada ponentes

formulario registro

usuario conectado

administracin

github.com/desymfony

El desarrollo

1. Instalacin
2. Modelo y Doctrine2
3. Vista y Twig
4. Formularios y seguridad
5. Backend
6. Assetic y Tests

Instalando
Symfony2

1
symfony.com/download

2
CON vendors SIN vendors
.ZIP

5.3 MB

0.1 MB

.TGZ

2.7 MB

0.1 MB

2
CON vendors SIN vendors
.ZIP

DOWNLOAD
5.3 MB

0.1 MB

.TGZ

2.7 MB

0.1 MB

3
descomprimir

http://localhost/symfony

1
symfony.com/download

2
CON vendors SIN vendors
.ZIP

5.3 MB

0.1 MB

.TGZ

2.7 MB

0.1 MB

2
CON vendors SIN vendors
.ZIP

5.3 MB

DOWNLOAD
0.1 MB

.TGZ

2.7 MB

0.1 MB

3
descomprimir

4
cd <directorio_symfony>
php bin/vendors install

Usas
y te sientes
cmodo con
Git?

SI

NO

CON vendors

SIN vendors

Configurador web

EN LA PRCTICA

Configurar el proyecto
va web

Instalando el
proyecto
deSymfony

1
mkdir proyecto

2
git clone
git@github.com:desymfony/desymfony.git

proyecto

3
proyecto/bin/vendors install

git checkout
!b tutorial1
origin/tutorial1

Bundles

1 Proyecto

1 Proyecto

2 Aplicaciones

1 Aplicacin

X Mdulos

X Bundles

Y Plugins

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


VENDOR
Tu empresa
El proyecto
Tu cliente

Desymfony / SitiosWeb / DesymfonyBundle


VENDOR CATEGORA
Tu empresa
El proyecto
Tu cliente

(opcional)

OBLIGATORIO

Desymfony / SitiosWeb / DesymfonyBundle


NOMBRE
VENDOR CATEGORA
Tu empresa
El proyecto
Tu cliente

(opcional)

Desymfony / DesymfonyBundle

EN LA PRCTICA

Crear el bundle con el


generador interactivo

Creando la
primera pgina

desymfony / contacto

enrutamiento

enrutamiento

Controlador

enrutamiento

Controlador

BD

Modelo

enrutamiento

Controlador
Vista

BD

Modelo

EN LA PRCTICA

Crear la pgina de
contacto

EN LA PRCTICA

Crear todas las pginas


estticas del sitio

EN LA PRCTICA

Introducir el profiler y la
barra de depuracin web

Namespaces

Antes de

<?php

symfony 1

include './comun/db.php';
require './comun/utilidades.php';
$articulo =
Doctrine::getTable('Articulo')->...

Aplicaciones

<?php

symfony 1

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

Aplicaciones

<?php

Symfony2

use Desymfony\DesymfonyBundle\Entity\Articulo;

$articulo = new Articulo();

src/Desymfony/DesymfonyBundle

Entity
Ponencia
Ponente
Usuario

src/Desymfony/DesymfonyBundle/Entity/
<?php

Ponencia.php

namespace Desymfony\DesymfonyBundle\Entity;

...

src/Desymfony/DesymfonyBundle/Controller/
<?php

PortadaController.php

public function portadaAction() {


$ponencia = new Ponencia();
...
}

src/Desymfony/DesymfonyBundle/Controller/
<?php

PortadaController.php

use Desymfony\DesymfonyBundle\Entity;

public function portadaAction() {

...
}

src/Desymfony/DesymfonyBundle/Controller/
<?php

PortadaController.php

use Desymfony\DesymfonyBundle\Entity;

public function portadaAction() {


$ponencia = new Entity\Ponencia();
...
}

src/Desymfony/DesymfonyBundle/Controller/
<?php

PortadaController.php

use Desymfony\DesymfonyBundle\Entity as Entidad;

public function portadaAction() {

...
}

src/Desymfony/DesymfonyBundle/Controller/
<?php

PortadaController.php

use Desymfony\DesymfonyBundle\Entity as Entidad;

public function portadaAction() {


$ponencia = new Entidad\Ponencia();
...
}

src/Desymfony/DesymfonyBundle/Controller/
<?php

PortadaController.php

public function portadaAction() {


$ponencia = new Ponencia();
...
}

src/Desymfony/DesymfonyBundle/Controller/
<?php

PortadaController.php

use Desymfony\DesymfonyBundle\Entity\Ponencia;

public function portadaAction() {


$ponencia = new Ponencia();
...
}

Inyeccin de
Dependencoas

src/Desymfony/DesymfonyBundle/Controller/
<?php

PortadaController.php

public function portadaAction() {


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

src/Desymfony/DesymfonyBundle/Controller/
<?php

PortadaController.php

public function portadaAction() {


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

src/Desymfony/DesymfonyBundle/Controller/
<?php

PortadaController.php

public function portadaAction() {


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

Contenedor de

Inyeccin de Dependencias
$this->get('mailer')->...
$this->container->get('mailer')->...

<?php
public function portadaAction() {
$this->get('mailer')->send($mensaje);
...
}

<?php
public function portadaAction() {
$this->get('mailer')->send($mensaje);
...
}

Qu mailer utilizar?
Clase, mtodos

<?php
public function portadaAction() {
$this->get('mailer')->send($mensaje);
...
}

Qu mailer utilizar?
Clase, mtodos

Configuracin?
Servidor, puerto

app/config/

config.yml
swiftmailer:
transport:
host:
username:
password:

smtp
localhost
~
~

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

swiftmailer-1.0.xsd

<xsd:complexType
<xsd:attribute
<xsd:attribute
<xsd:attribute
<xsd:attribute
<xsd:attribute
...

name="config">
name="username" type="xsd:string" />
name="password" type="xsd:string" />
name="host" type="xsd:string" />
name="port" type="xsd:string" />
name="type" type="xsd:string" />

</xsd:complexType>

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

swiftmailer.xml

<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>

Dame un
mailer!

Contenedor de
Inyeccin de
Dependencias

Dame un
mailer!

instrucciones para
crear mailers

instrucciones para
crear Doctrine

Contenedor de
Inyeccin de
Dependencias

instrucciones para
crear loggers

Dame un
mailer!

instrucciones para
crear mailers

instrucciones para
crear Doctrine

Contenedor de
Inyeccin de
Dependencias

instrucciones para
crear loggers

1. Instalado Symfony2
2. Configurado Symfony2
3. Instalado deSymfony
4. Creado el bundle
5. Todas las pginas estticas

contacto
javier.eguiluz@gmail.com
twitter.com/javiereguiluz
linkedin.com/in/javiereguiluz

También podría gustarte