SlideShare una empresa de Scribd logo
Symfony 2 CMF
Symfony 2 CMF
Por qué
Python community 2010




             http://www.flickr.com/photos/27734462@N00/4456118597
PHP community, 2010




           http://www.flickr.com/photos/27734462@N00/4456830956
http://www.flickr.com/photos/57768341@N00/3387704295
Symfony2 al rescate




              http://www.flickr.com/photos/18597080@N04/2566928348
Symfony 2 CMF
Un entorno común




            http://www.flickr.com/photos/61414741@N00/77346889Text
http://www.flickr.com/photos/10209031@N08/4542049217
http://www.flickr.com/photos/38158467@N00/83109701
Text
Los componentes de
   Symfony2 son
     genéricos
 pero Internet está
llena de contenido
Los componentes de
   Symfony2 son
     genéricos
 pero Internet está
llena de contenido
Drupal está muy bien

 si eres un usuario
Drupal está muy bien

 si eres un usuario
Vamos a intentarlo
¿TinyMCE y a correr?
No, a lo loco
Queremos...
Queremos...
Estructura en árbol
Queremos...
Estructura en árbol

Documentos sin
estructura
Queremos...
Estructura en árbol

Documentos sin
estructura

Querys para el árbol
Queremos...
Estructura en árbol

Documentos sin
estructura

Querys para el árbol

Fulltext
Queremos...
Estructura en árbol

Documentos sin
estructura

Querys para el árbol

Fulltext

Usable en hosting
compartido...
Queremos...
Estructura en árbol

Documentos sin
estructura

Querys para el árbol

Fulltext

Usable en hosting
compartido...

...pero escalable
Queremos...
Estructura en árbol

Documentos sin
estructura

Querys para el árbol

Fulltext

Usable en hosting
compartido...

...pero escalable

Que sea un estándar
Queremos...
Estructura en árbol

Documentos sin
estructura

Querys para el árbol

Fulltext

Usable en hosting
compartido...

...pero escalable

Que sea un estándar

...y tenga varias
implementaciones!
Queremos...
Estructura en árbol    Versionable

Documentos sin
estructura

Querys para el árbol

Fulltext

Usable en hosting
compartido...

...pero escalable

Que sea un estándar

...y tenga varias
implementaciones!
Queremos...
Estructura en árbol    Versionable

Documentos sin         Traducible
estructura

Querys para el árbol

Fulltext

Usable en hosting
compartido...

...pero escalable

Que sea un estándar

...y tenga varias
implementaciones!
Queremos...
Estructura en árbol    Versionable

Documentos sin         Traducible
estructura
                       Rutas editables
Querys para el árbol

Fulltext

Usable en hosting
compartido...

...pero escalable

Que sea un estándar

...y tenga varias
implementaciones!
Queremos...
Estructura en árbol    Versionable

Documentos sin         Traducible
estructura
                       Rutas editables
Querys para el árbol
                       Miles de ellas
Fulltext

Usable en hosting
compartido...

...pero escalable

Que sea un estándar

...y tenga varias
implementaciones!
Queremos...
Estructura en árbol    Versionable

Documentos sin         Traducible
estructura
                       Rutas editables
Querys para el árbol
                       Miles de ellas
Fulltext
                       Menús
Usable en hosting
compartido...

...pero escalable

Que sea un estándar

...y tenga varias
implementaciones!
Queremos...
Estructura en árbol    Versionable

Documentos sin         Traducible
estructura
                       Rutas editables
Querys para el árbol
                       Miles de ellas
Fulltext
                       Menús
Usable en hosting
compartido...          ACL
...pero escalable

Que sea un estándar

...y tenga varias
implementaciones!
Queremos...
Estructura en árbol    Versionable

Documentos sin         Traducible
estructura
                       Rutas editables
Querys para el árbol
                       Miles de ellas
Fulltext
                       Menús
Usable en hosting
compartido...          ACL
...pero escalable      Admin panel
Que sea un estándar

...y tenga varias
implementaciones!
Queremos...
Estructura en árbol    Versionable

Documentos sin         Traducible
estructura
                       Rutas editables
Querys para el árbol
                       Miles de ellas
Fulltext
                       Menús
Usable en hosting
compartido...          ACL
...pero escalable      Admin panel
Que sea un estándar    Editable inline
...y tenga varias
implementaciones!
Queremos...
Estructura en árbol    Versionable

Documentos sin         Traducible
estructura
                       Rutas editables
Querys para el árbol
                       Miles de ellas
Fulltext
                       Menús
Usable en hosting
compartido...          ACL
...pero escalable      Admin panel
Que sea un estándar    Editable inline
...y tenga varias      Que no haga falta
implementaciones!      saberlo todo
¿Cuánto tardaremos en hacer esa
           animalada?




                     http://www.flickr.com/photos/83476873@N00/110993877
Ya está hecha
    (O casi)
Componentes
PHPCR
el estándar
Symfony 2 CMF
API estándar


JCR “phpizado”
Estructura
Estructura
Estructura
Estructura
Estructura
paths
Estructura
node
paths types
Estructura
mixins
node
paths types
Estructura
mixins
node
paths types
propiedades


     {
         title
         text
         jcr:created
         phpcr:class
STRING    BINARY
URL       DATE
BOOLEAN   NAME
LONG      PATH
DOUBLE    WEAKREFERENCE
DECIMAL   REFERENCE
Tipos de propiedades

STRING    BINARY
URL       DATE
BOOLEAN   NAME
LONG      PATH
DOUBLE    WEAKREFERENCE
DECIMAL   REFERENCE
Symfony 2 CMF
Conexión


use JackalopeRepositoryFactoryJackrabbit as Factory;

$parameters = array(
    'jackalope.jackrabbit_uri'
        => 'http://localhost:8080/server'
);

$repository = Factory::getRepository($parameters);

$creds = new PHPCRSimpleCredentials('user','pw');
$session = $repository->login($creds, 'default');
CRUD


// Crear
$root = $session->getRootNode();
$node = $root->addNode('test', 'nt:unstructured');
// Leer
$node = $session->getNode('/test');
// Actualizar
$node->setProperty('prop', 'value');
// Eliminar
$node->remove();
Guardar las modificaciones




      $session->save();
Obtener hijos




foreach ($node as $child) {
    var_dump($child->getName());
}
Obtener hijos filtrando




foreach ($node->getNodes('di*') as $child) {
    var_dump($child->getName());
}
Consultas en SQL2

$qm = $workspace->getQueryManager();

$sql = "SELECT * FROM [nt:unstructured]
    WHERE [nt:unstructured].type = 'nav'
    AND ISDESCENDANTNODE('/some/path')
    ORDER BY score, [nt:unstructured].title";
$query = $qm->createQuery($sql, 'JCR-SQL2');
$query->setLimit($limit);
$query->setOffset($offset);
$queryResult = $query->execute();

foreach ($queryResult->getNodes() as $node) {
    var_dump($node->getPath());
}
Consultas con QOM
$qm = $workspace->getQueryManager();
$factory = $qm->getQOMFactory();

// SELECT * FROM nt:file INNER JOIN nt:folder ON
ISCHILDNODE(child, parent)
$factory->createQuery(
    $factory->join(
        $factory->selector('nt:file'),
        $factory->selector('nt:folder'),
        Constants::JCR_JOIN_TYPE_INNER,
        $factory->childNodeJoinCondition('child',
'parent')),
    null,
    array(),
    array());
Consultas con interfaz fluida


$qm = $workspace->getQueryManager();
$factory = $qm->getQOMFactory();

// SELECT * FROM nt:unstructured WHERE name NOT IS
NULL
$qb = new QueryBuilder($factory);
$qb->select($factory->selector('nt:unstructured'))
   ->where($factory->propertyExistence('name'))
   ->setFirstResult(10)
   ->setMaxResults(10)
   ->execute();
Implementaciones

   (estándar)
Doctrine
PHPCR-ODM
el object document mapper
Documentos
namespace Foo;

use DoctrineODMPHPCRMapping as PHPCR;
/** @PHPCRDocument */
class Bar
{
  /** @PHPCRId */
  public $id;

    /**
     * @PHPCRParentDocument
     */
    public $parent;

    /** @PHPCRNodename */
    public $nodename;

    /** @PHPCRString */
    public $text;

}
Referencias
/**
 * Hijo con nombre "el-logo"
 * @PHPCRChild(name="el-logo")
 */
public $logo;

/**
 * Hijos que empiecen con "a"
 * @PHPCRChildren(filter="a*")
 */
public $children;

/** @PHPCRReferenceOne */
public $reference;

/** @PHPCRReferrers */
public $referrers;
CRUD
Ya conoces la
   interfaz
CRUD
Ya conoces la
   interfaz
Versiones con ODM
// @Document(versionable="simple")
$document = $dm->find(null, $id);

// crear versión
$dm->checkpoint($document);

// obtener últimas dos versiones
$history = $dm->getAllLinearVersions($document, 2);

// obtener versión
$version = reset($history);
$pre = $dm->findVersionByName(null, $id, $version['versionname']);
echo $pre->text;

// restablecer versión
$dm->restoreVersion($pre, true);

//eliminar versión
$dm->deleteVersion($pre2);
Las versiones tienen
    mucha tela
  Pero si la ignoras no te hace daño
Las versiones tienen
    mucha tela
  Pero si la ignoras no te hace daño
Traducciones con
     ODM
Documentos multilingües
/** @PHPCRDocument(translator="attribute") */
class Article
{
    /**
     * The language this document currently is in
     * @PHPCRLocale
     */
    public $locale;

    /**
     * Untranslated property
     * @PHPCRDate
     */
    public $publishDate;

    /**
     * Translated property
     * @PHPCRString(translated=true)
     */

    public $topic;

    /**
     * Language specific image
     * @PHPCRBinary(translated=true)
     */
    public $image;
}
Crear traducción



$article = new Article();
$article->topic = 'hola';
$dm->persist($article);
$dm->bindTranslation($article, 'es');
$dm->flush();
Obtener traducción




$article = $dm->findTranslation(null, '/test', 'es');
¿A qué lenguas está traducido?




$locales = $dm->getLocalesFor($article);
MultilangContentBundle


Documentos base para contenido, rutas y
menús

Selector de lengua

Las traducciones se almacenan en nodos hijo
Rutas
El problema


El usuario quiere definir sus urls

Y quiere unos cientos de miles
Solucionado!


navigation:
    pattern: "/{url}"
    defaults: { _controller: service.controller:indexAction }
    requirements:
        url: .*
Solucionado!
DynamicRouter

Las rutas son documentos en la BD

La ruta puede especificar un controlador...

...o usar uno por defecto
DynamicRouter
symfony_cmf_routing_extra:
    dynamic:
        enabled: true
        controllers_by_alias:
            demo_alias: sandbox_main.controller:aliasAction
        controllers_by_class:
            SandboxMainBundleDocumentDemoClassContent: 
sandbox_main.controller:classAction

            SymfonyCmfBundleRoutingExtraBundleDocument
RedirectRoute: 
symfony_cmf_routing_extra.redirect_controller:redirectAction

        templates_by_class:
            SandboxMainBundleDocumentEditableStaticContent:
SandboxMainBundle:EditableStaticContent:index.html.twig
DynamicRouter
symfony_cmf_routing_extra:
    dynamic:
        enabled: true
        controllers_by_alias:
            demo_alias: sandbox_main.controller:aliasAction
        controllers_by_class:
            SandboxMainBundleDocumentDemoClassContent: 
sandbox_main.controller:classAction

            SymfonyCmfBundleRoutingExtraBundleDocument
RedirectRoute: 
symfony_cmf_routing_extra.redirect_controller:redirectAction

        templates_by_class:
            SandboxMainBundleDocumentEditableStaticContent:
SandboxMainBundle:EditableStaticContent:index.html.twig
DynamicRouter
symfony_cmf_routing_extra:
    dynamic:
        enabled: true
        controllers_by_alias:
            demo_alias: sandbox_main.controller:aliasAction
        controllers_by_class:
            SandboxMainBundleDocumentDemoClassContent: 
sandbox_main.controller:classAction

            SymfonyCmfBundleRoutingExtraBundleDocument
RedirectRoute: 
symfony_cmf_routing_extra.redirect_controller:redirectAction

        templates_by_class:
            SandboxMainBundleDocumentEditableStaticContent:
SandboxMainBundle:EditableStaticContent:index.html.twig
DynamicRouter
symfony_cmf_routing_extra:
    dynamic:
        enabled: true
        controllers_by_alias:
            demo_alias: sandbox_main.controller:aliasAction
        controllers_by_class:
            SandboxMainBundleDocumentDemoClassContent: 
sandbox_main.controller:classAction

            SymfonyCmfBundleRoutingExtraBundleDocument
RedirectRoute: 
symfony_cmf_routing_extra.redirect_controller:redirectAction

        templates_by_class:
            SandboxMainBundleDocumentEditableStaticContent:
SandboxMainBundle:EditableStaticContent:index.html.twig
ChainRouter


symfony_cmf_routing_extra:
    chain:
        routers_by_id:
            symfony_cmf_routing_extra.dynamic_router: 20
            router.default: 100
Symfony 2 CMF
Symfony 2 CMF
Symfony 2 CMF
¡Más!
MenuBundle, MultilangContentBundle
Symfony 2 CMF
BlockBundle
PhpcrAdminBundle
En resumen...
Symfony 2 CMF
Symfony 2 CMF
Participa
    adou600 (Adrien Nicolet)                •   lapistano (Bastian Feder)
•   beberlei (Benjamin Eberlei)             •   lsmith77 (Lukas K. Smith)
•   bergie (Henri Bergius)                  •   micheleorselli (Michele Orselli)
•   brki (Brian King)                       •   nacmartin (Nacho Martín)
•   chirimoya (Thomas Schedler)             •   nicam (Pascal Helfenstein)
•   chregu (Christian Stocker)              •   Ocramius (Marco Pivetta)
•   cordoval (Luis Cordova)                 •   ornicar (Thibault Duplessis)
•   damz (Damien Tournoud)                  •   piotras
•   dbu (David Buchmann)                    •   pitpit (Damien Pitard)
•   dotZoki (Zoran)                         •   robertlemke (Robert Lemke)
•   ebi (Tobias Ebnöther)                   •   rndstr (Roland Schilter)
•   iambrosi (Ismael Ambrosi)               •   Seldaek (Jordi Boggiano)
•   jakuza (Jacopo Romei)                   •   sixty-nine (Daniel Barsotti)
•   justinrainbow (Justin Rainbow)          •   uwej711 (Uwe Jäger)
•   k-fish (Karsten Dambekalns)              •   vedranzgela (Vedran Zgela)
•   krizon (Kristian Zondervan)             •   videlalvaro (Alvaro Videla)


                              http://cmf.symfony.com

                                 #symfony-cmf IRC
Gracias
Nacho Martín

nacho@limenius.com
@nacmartin
Publicidad

Más contenido relacionado

La actualidad más candente (7)

Php
PhpPhp
Php
Eduardo Olivas
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de aries
lmrv
 
Curso Formacion Apache Solr
Curso Formacion Apache SolrCurso Formacion Apache Solr
Curso Formacion Apache Solr
EmpathyBroker
 
Doctrine2 sf2Vigo
Doctrine2 sf2VigoDoctrine2 sf2Vigo
Doctrine2 sf2Vigo
Ignacio Martín
 
PHP - MYSQL
PHP - MYSQLPHP - MYSQL
PHP - MYSQL
asir22012
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
Darwin Durand
 
Introduction to linux for bioinformatics
Introduction to linux for bioinformaticsIntroduction to linux for bioinformatics
Introduction to linux for bioinformatics
Alberto Labarga
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de aries
lmrv
 
Curso Formacion Apache Solr
Curso Formacion Apache SolrCurso Formacion Apache Solr
Curso Formacion Apache Solr
EmpathyBroker
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
Darwin Durand
 
Introduction to linux for bioinformatics
Introduction to linux for bioinformaticsIntroduction to linux for bioinformatics
Introduction to linux for bioinformatics
Alberto Labarga
 

Destacado (20)

Charte et défis...
Charte et défis...Charte et défis...
Charte et défis...
Guy Drouin
 
Création d'entreprise les clés du succès - Les Entreprenariales 2014
Création d'entreprise les clés du succès - Les Entreprenariales 2014Création d'entreprise les clés du succès - Les Entreprenariales 2014
Création d'entreprise les clés du succès - Les Entreprenariales 2014
CEEI NCA
 
Angers Auto-Moto numero 2 - été 2013
Angers Auto-Moto numero 2 - été 2013Angers Auto-Moto numero 2 - été 2013
Angers Auto-Moto numero 2 - été 2013
nantes-auto-moto
 
Nouvelle - Calédonie
Nouvelle - CalédonieNouvelle - Calédonie
Nouvelle - Calédonie
sarahbelalia
 
Poème inédit parole au poète
Poème inédit   parole au poètePoème inédit   parole au poète
Poème inédit parole au poète
abdelmalek aghzaf
 
Présentation ShoreTel lors du Waycom Business Meeting du 11/06/15
Présentation ShoreTel lors du Waycom Business Meeting du 11/06/15Présentation ShoreTel lors du Waycom Business Meeting du 11/06/15
Présentation ShoreTel lors du Waycom Business Meeting du 11/06/15
Waycom
 
[What's next ? Place à l'entreprise créative !] Le monde change, les stratégi...
[What's next ? Place à l'entreprise créative !] Le monde change, les stratégi...[What's next ? Place à l'entreprise créative !] Le monde change, les stratégi...
[What's next ? Place à l'entreprise créative !] Le monde change, les stratégi...
TheCreativists
 
Présentation du thème
Présentation du thèmePrésentation du thème
Présentation du thème
Wiki Info Systeme
 
Que choisir Enquête sur le prix des parkings
Que choisir Enquête sur le prix des parkingsQue choisir Enquête sur le prix des parkings
Que choisir Enquête sur le prix des parkings
Webm Aster
 
Google Adwords
Google AdwordsGoogle Adwords
Google Adwords
Ivonne Delgado Comunicación Inteligente
 
L’échelle visuelle analogique un outil commun en équipe pluridisciplinaire.
L’échelle visuelle analogique   un outil commun en équipe pluridisciplinaire.L’échelle visuelle analogique   un outil commun en équipe pluridisciplinaire.
L’échelle visuelle analogique un outil commun en équipe pluridisciplinaire.
Réseau Pro Santé
 
Una bella mujer JULIA URBIÑA
Una bella mujer JULIA URBIÑAUna bella mujer JULIA URBIÑA
Una bella mujer JULIA URBIÑA
Benito Peñate
 
Presentation THE PLACE TO DRESS
Presentation THE PLACE TO DRESSPresentation THE PLACE TO DRESS
Presentation THE PLACE TO DRESS
theplacetodress
 
Los viajes de pocoyo , patricio y bob. alejandro y pedro
Los viajes de pocoyo , patricio y bob. alejandro y pedroLos viajes de pocoyo , patricio y bob. alejandro y pedro
Los viajes de pocoyo , patricio y bob. alejandro y pedro
yanete
 
Ene serpent blesse
Ene serpent blesseEne serpent blesse
Ene serpent blesse
Ilyas Qadri Ziaee
 
MSDevMtl introduction au dev SharePoint online, office et office 365
MSDevMtl introduction au dev SharePoint online, office et office 365MSDevMtl introduction au dev SharePoint online, office et office 365
MSDevMtl introduction au dev SharePoint online, office et office 365
Vincent Biret
 
La salle ventadour
La salle ventadourLa salle ventadour
La salle ventadour
Histoires2Paris
 
Calendrier P1 à P2B
Calendrier P1 à P2BCalendrier P1 à P2B
Calendrier P1 à P2B
benjaave
 
Classement général Pronodix
Classement général PronodixClassement général Pronodix
Classement général Pronodix
benjaave
 
I convocatoria matemática x año curso 2015
I convocatoria matemática x año curso 2015I convocatoria matemática x año curso 2015
I convocatoria matemática x año curso 2015
Jorge Umaña
 
Charte et défis...
Charte et défis...Charte et défis...
Charte et défis...
Guy Drouin
 
Création d'entreprise les clés du succès - Les Entreprenariales 2014
Création d'entreprise les clés du succès - Les Entreprenariales 2014Création d'entreprise les clés du succès - Les Entreprenariales 2014
Création d'entreprise les clés du succès - Les Entreprenariales 2014
CEEI NCA
 
Angers Auto-Moto numero 2 - été 2013
Angers Auto-Moto numero 2 - été 2013Angers Auto-Moto numero 2 - été 2013
Angers Auto-Moto numero 2 - été 2013
nantes-auto-moto
 
Nouvelle - Calédonie
Nouvelle - CalédonieNouvelle - Calédonie
Nouvelle - Calédonie
sarahbelalia
 
Poème inédit parole au poète
Poème inédit   parole au poètePoème inédit   parole au poète
Poème inédit parole au poète
abdelmalek aghzaf
 
Présentation ShoreTel lors du Waycom Business Meeting du 11/06/15
Présentation ShoreTel lors du Waycom Business Meeting du 11/06/15Présentation ShoreTel lors du Waycom Business Meeting du 11/06/15
Présentation ShoreTel lors du Waycom Business Meeting du 11/06/15
Waycom
 
[What's next ? Place à l'entreprise créative !] Le monde change, les stratégi...
[What's next ? Place à l'entreprise créative !] Le monde change, les stratégi...[What's next ? Place à l'entreprise créative !] Le monde change, les stratégi...
[What's next ? Place à l'entreprise créative !] Le monde change, les stratégi...
TheCreativists
 
Que choisir Enquête sur le prix des parkings
Que choisir Enquête sur le prix des parkingsQue choisir Enquête sur le prix des parkings
Que choisir Enquête sur le prix des parkings
Webm Aster
 
L’échelle visuelle analogique un outil commun en équipe pluridisciplinaire.
L’échelle visuelle analogique   un outil commun en équipe pluridisciplinaire.L’échelle visuelle analogique   un outil commun en équipe pluridisciplinaire.
L’échelle visuelle analogique un outil commun en équipe pluridisciplinaire.
Réseau Pro Santé
 
Una bella mujer JULIA URBIÑA
Una bella mujer JULIA URBIÑAUna bella mujer JULIA URBIÑA
Una bella mujer JULIA URBIÑA
Benito Peñate
 
Presentation THE PLACE TO DRESS
Presentation THE PLACE TO DRESSPresentation THE PLACE TO DRESS
Presentation THE PLACE TO DRESS
theplacetodress
 
Los viajes de pocoyo , patricio y bob. alejandro y pedro
Los viajes de pocoyo , patricio y bob. alejandro y pedroLos viajes de pocoyo , patricio y bob. alejandro y pedro
Los viajes de pocoyo , patricio y bob. alejandro y pedro
yanete
 
MSDevMtl introduction au dev SharePoint online, office et office 365
MSDevMtl introduction au dev SharePoint online, office et office 365MSDevMtl introduction au dev SharePoint online, office et office 365
MSDevMtl introduction au dev SharePoint online, office et office 365
Vincent Biret
 
Calendrier P1 à P2B
Calendrier P1 à P2BCalendrier P1 à P2B
Calendrier P1 à P2B
benjaave
 
Classement général Pronodix
Classement général PronodixClassement général Pronodix
Classement général Pronodix
benjaave
 
I convocatoria matemática x año curso 2015
I convocatoria matemática x año curso 2015I convocatoria matemática x año curso 2015
I convocatoria matemática x año curso 2015
Jorge Umaña
 
Publicidad

Similar a Symfony 2 CMF (20)

Laravel 5.1
Laravel 5.1Laravel 5.1
Laravel 5.1
René Sandoval
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos Web
Facundo E. Goñi Perez
 
Docker ECS en AWS
Docker ECS en AWS Docker ECS en AWS
Docker ECS en AWS
Amazon Web Services LATAM
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.
Asier Marqués
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
Marcos Labad
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
Ronald Cuello
 
Frameworks para Php Adwa
Frameworks para Php AdwaFrameworks para Php Adwa
Frameworks para Php Adwa
Andres Karp
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
omicx
 
9.laravel
9.laravel9.laravel
9.laravel
Ramiro Estigarribia Canese
 
Desarrollo de aplicaciones con wpf
Desarrollo de aplicaciones con wpfDesarrollo de aplicaciones con wpf
Desarrollo de aplicaciones con wpf
Alberto Rubalcaba Stockman
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
Raul Fraile
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con Hibernate
Mauro Gomez Mejia
 
utilizar el progama por primera WAMP5.pptx
utilizar el progama por primera WAMP5.pptxutilizar el progama por primera WAMP5.pptx
utilizar el progama por primera WAMP5.pptx
ortegacbtis2024
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
Jorge Iván Meza Martínez
 
252620901-Taller-de-PHPpara bachillerato tecnico.ppt
252620901-Taller-de-PHPpara bachillerato tecnico.ppt252620901-Taller-de-PHPpara bachillerato tecnico.ppt
252620901-Taller-de-PHPpara bachillerato tecnico.ppt
EdwinCisnerod
 
Introduccion a DOM y AJAX - Javier Oliver Fulguera
Introduccion a DOM y AJAX  -  Javier Oliver FulgueraIntroduccion a DOM y AJAX  -  Javier Oliver Fulguera
Introduccion a DOM y AJAX - Javier Oliver Fulguera
Javier Oliver Fulguera
 
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
Raaulroodriguez
 
Couch db
Couch dbCouch db
Couch db
Christian Castillo
 
Framework .NET 3.5 14 Gestión de archivos y serialización
Framework .NET 3.5 14  Gestión de archivos y serializaciónFramework .NET 3.5 14  Gestión de archivos y serialización
Framework .NET 3.5 14 Gestión de archivos y serialización
Antonio Palomares Sender
 
Drupal 8, presente y futuro
Drupal 8, presente y futuroDrupal 8, presente y futuro
Drupal 8, presente y futuro
Mediaglobe Innova
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos Web
Facundo E. Goñi Perez
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.
Asier Marqués
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
Marcos Labad
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
Ronald Cuello
 
Frameworks para Php Adwa
Frameworks para Php AdwaFrameworks para Php Adwa
Frameworks para Php Adwa
Andres Karp
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
omicx
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
Raul Fraile
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con Hibernate
Mauro Gomez Mejia
 
utilizar el progama por primera WAMP5.pptx
utilizar el progama por primera WAMP5.pptxutilizar el progama por primera WAMP5.pptx
utilizar el progama por primera WAMP5.pptx
ortegacbtis2024
 
252620901-Taller-de-PHPpara bachillerato tecnico.ppt
252620901-Taller-de-PHPpara bachillerato tecnico.ppt252620901-Taller-de-PHPpara bachillerato tecnico.ppt
252620901-Taller-de-PHPpara bachillerato tecnico.ppt
EdwinCisnerod
 
Introduccion a DOM y AJAX - Javier Oliver Fulguera
Introduccion a DOM y AJAX  -  Javier Oliver FulgueraIntroduccion a DOM y AJAX  -  Javier Oliver Fulguera
Introduccion a DOM y AJAX - Javier Oliver Fulguera
Javier Oliver Fulguera
 
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
Raaulroodriguez
 
Framework .NET 3.5 14 Gestión de archivos y serialización
Framework .NET 3.5 14  Gestión de archivos y serializaciónFramework .NET 3.5 14  Gestión de archivos y serialización
Framework .NET 3.5 14 Gestión de archivos y serialización
Antonio Palomares Sender
 
Publicidad

Más de Ignacio Martín (17)

Elixir/OTP for PHP developers
Elixir/OTP for PHP developersElixir/OTP for PHP developers
Elixir/OTP for PHP developers
Ignacio Martín
 
Introduction to React Native Workshop
Introduction to React Native WorkshopIntroduction to React Native Workshop
Introduction to React Native Workshop
Ignacio Martín
 
Server side rendering with React and Symfony
Server side rendering with React and SymfonyServer side rendering with React and Symfony
Server side rendering with React and Symfony
Ignacio Martín
 
Symfony 4 Workshop - Limenius
Symfony 4 Workshop - LimeniusSymfony 4 Workshop - Limenius
Symfony 4 Workshop - Limenius
Ignacio Martín
 
Server Side Rendering of JavaScript in PHP
Server Side Rendering of JavaScript in PHPServer Side Rendering of JavaScript in PHP
Server Side Rendering of JavaScript in PHP
Ignacio Martín
 
Extending Redux in the Server Side
Extending Redux in the Server SideExtending Redux in the Server Side
Extending Redux in the Server Side
Ignacio Martín
 
Redux Sagas - React Alicante
Redux Sagas - React AlicanteRedux Sagas - React Alicante
Redux Sagas - React Alicante
Ignacio Martín
 
React Native Workshop - React Alicante
React Native Workshop - React AlicanteReact Native Workshop - React Alicante
React Native Workshop - React Alicante
Ignacio Martín
 
Asegurando APIs en Symfony con JWT
Asegurando APIs en Symfony con JWTAsegurando APIs en Symfony con JWT
Asegurando APIs en Symfony con JWT
Ignacio Martín
 
Redux saga: managing your side effects. Also: generators in es6
Redux saga: managing your side effects. Also: generators in es6Redux saga: managing your side effects. Also: generators in es6
Redux saga: managing your side effects. Also: generators in es6
Ignacio Martín
 
Integrating React.js with PHP projects
Integrating React.js with PHP projectsIntegrating React.js with PHP projects
Integrating React.js with PHP projects
Ignacio Martín
 
Introduction to Redux
Introduction to ReduxIntroduction to Redux
Introduction to Redux
Ignacio Martín
 
Keeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and WebpackKeeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and Webpack
Ignacio Martín
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Ignacio Martín
 
Adding Realtime to your Projects
Adding Realtime to your ProjectsAdding Realtime to your Projects
Adding Realtime to your Projects
Ignacio Martín
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worlds
Ignacio Martín
 
Presentacion git
Presentacion gitPresentacion git
Presentacion git
Ignacio Martín
 
Elixir/OTP for PHP developers
Elixir/OTP for PHP developersElixir/OTP for PHP developers
Elixir/OTP for PHP developers
Ignacio Martín
 
Introduction to React Native Workshop
Introduction to React Native WorkshopIntroduction to React Native Workshop
Introduction to React Native Workshop
Ignacio Martín
 
Server side rendering with React and Symfony
Server side rendering with React and SymfonyServer side rendering with React and Symfony
Server side rendering with React and Symfony
Ignacio Martín
 
Symfony 4 Workshop - Limenius
Symfony 4 Workshop - LimeniusSymfony 4 Workshop - Limenius
Symfony 4 Workshop - Limenius
Ignacio Martín
 
Server Side Rendering of JavaScript in PHP
Server Side Rendering of JavaScript in PHPServer Side Rendering of JavaScript in PHP
Server Side Rendering of JavaScript in PHP
Ignacio Martín
 
Extending Redux in the Server Side
Extending Redux in the Server SideExtending Redux in the Server Side
Extending Redux in the Server Side
Ignacio Martín
 
Redux Sagas - React Alicante
Redux Sagas - React AlicanteRedux Sagas - React Alicante
Redux Sagas - React Alicante
Ignacio Martín
 
React Native Workshop - React Alicante
React Native Workshop - React AlicanteReact Native Workshop - React Alicante
React Native Workshop - React Alicante
Ignacio Martín
 
Asegurando APIs en Symfony con JWT
Asegurando APIs en Symfony con JWTAsegurando APIs en Symfony con JWT
Asegurando APIs en Symfony con JWT
Ignacio Martín
 
Redux saga: managing your side effects. Also: generators in es6
Redux saga: managing your side effects. Also: generators in es6Redux saga: managing your side effects. Also: generators in es6
Redux saga: managing your side effects. Also: generators in es6
Ignacio Martín
 
Integrating React.js with PHP projects
Integrating React.js with PHP projectsIntegrating React.js with PHP projects
Integrating React.js with PHP projects
Ignacio Martín
 
Keeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and WebpackKeeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and Webpack
Ignacio Martín
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Ignacio Martín
 
Adding Realtime to your Projects
Adding Realtime to your ProjectsAdding Realtime to your Projects
Adding Realtime to your Projects
Ignacio Martín
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worlds
Ignacio Martín
 

Último (20)

Teleconferencia Accionistas Primer Trimestre 2025 VF.pdf
Teleconferencia Accionistas Primer Trimestre 2025 VF.pdfTeleconferencia Accionistas Primer Trimestre 2025 VF.pdf
Teleconferencia Accionistas Primer Trimestre 2025 VF.pdf
contactoimsa
 
proyecto individual. Hay vida después del acuerdo.docx
proyecto individual. Hay vida después del acuerdo.docxproyecto individual. Hay vida después del acuerdo.docx
proyecto individual. Hay vida después del acuerdo.docx
FlorAyay1
 
Control estadistico de la super calidad.pdf
Control estadistico de la super calidad.pdfControl estadistico de la super calidad.pdf
Control estadistico de la super calidad.pdf
AlanAranibar2
 
CIRCULAR FISCAL - CAMPAÑA RENTA 2024.ppsx
CIRCULAR FISCAL - CAMPAÑA RENTA 2024.ppsxCIRCULAR FISCAL - CAMPAÑA RENTA 2024.ppsx
CIRCULAR FISCAL - CAMPAÑA RENTA 2024.ppsx
CORPORACIONJURIDICA
 
NIA 520-Norma Internacional de Auditoría
NIA 520-Norma Internacional de AuditoríaNIA 520-Norma Internacional de Auditoría
NIA 520-Norma Internacional de Auditoría
SolHumacata
 
formaciondelaidentificacionsexualjjjjjjjj
formaciondelaidentificacionsexualjjjjjjjjformaciondelaidentificacionsexualjjjjjjjj
formaciondelaidentificacionsexualjjjjjjjj
venturafatima752
 
LeanOverviewLSKDCNSLKDCSLKDCMLSKDMCK.ppt
LeanOverviewLSKDCNSLKDCSLKDCMLSKDMCK.pptLeanOverviewLSKDCNSLKDCSLKDCMLSKDMCK.ppt
LeanOverviewLSKDCNSLKDCSLKDCMLSKDMCK.ppt
AndrsRojas77
 
campaña de marketing digital.campaña de marketing digital.pdf
campaña de marketing digital.campaña de marketing digital.pdfcampaña de marketing digital.campaña de marketing digital.pdf
campaña de marketing digital.campaña de marketing digital.pdf
pg slot
 
GRUPAL 2 MARKETING ESTRATEGIC .O.pptx
GRUPAL 2 MARKETING ESTRATEGIC     .O.pptxGRUPAL 2 MARKETING ESTRATEGIC     .O.pptx
GRUPAL 2 MARKETING ESTRATEGIC .O.pptx
giovannachise
 
INCUBESE PARA INICAR SU NEGOCIO_expo.pptx
INCUBESE PARA INICAR SU NEGOCIO_expo.pptxINCUBESE PARA INICAR SU NEGOCIO_expo.pptx
INCUBESE PARA INICAR SU NEGOCIO_expo.pptx
iancarloslopezpazos4
 
2025 Abril - Elaboración de Blogs para Impulsar el Crecimiento Empresarial c...
2025 Abril -  Elaboración de Blogs para Impulsar el Crecimiento Empresarial c...2025 Abril -  Elaboración de Blogs para Impulsar el Crecimiento Empresarial c...
2025 Abril - Elaboración de Blogs para Impulsar el Crecimiento Empresarial c...
Boundify
 
Control estadistico de la calidad cientifico.pdf
Control estadistico de la calidad cientifico.pdfControl estadistico de la calidad cientifico.pdf
Control estadistico de la calidad cientifico.pdf
AlanAranibar2
 
Procesos empresariales en SAP S/4HANA Gestión de activos fijos
Procesos empresariales en SAP S/4HANA Gestión de activos fijosProcesos empresariales en SAP S/4HANA Gestión de activos fijos
Procesos empresariales en SAP S/4HANA Gestión de activos fijos
Course17
 
Analisis deoeoeoeoeoeooeoeoeoeoeoeoeooeoe
Analisis deoeoeoeoeoeooeoeoeoeoeoeoeooeoeAnalisis deoeoeoeoeoeooeoeoeoeoeoeoeooeoe
Analisis deoeoeoeoeoeooeoeoeoeoeoeoeooeoe
DanielErazoMedina
 
(Deusto) Ray Dalio - Principios de gestión de empresas como proceder.pdf
(Deusto) Ray Dalio - Principios de gestión de empresas como proceder.pdf(Deusto) Ray Dalio - Principios de gestión de empresas como proceder.pdf
(Deusto) Ray Dalio - Principios de gestión de empresas como proceder.pdf
Mauricio Villalobos Figueroa
 
MiPYMES y su impotencia en el mercado!!!
MiPYMES y su impotencia en el mercado!!!MiPYMES y su impotencia en el mercado!!!
MiPYMES y su impotencia en el mercado!!!
LauraSofia283712
 
MATE NEGOCIOS universidad I SEMANA 2.pptx
MATE NEGOCIOS universidad I  SEMANA 2.pptxMATE NEGOCIOS universidad I  SEMANA 2.pptx
MATE NEGOCIOS universidad I SEMANA 2.pptx
ChristianCunyaPerez1
 
02 MEP_Constitucion_y_Formalizacion CONT.SOC.pdf
02 MEP_Constitucion_y_Formalizacion CONT.SOC.pdf02 MEP_Constitucion_y_Formalizacion CONT.SOC.pdf
02 MEP_Constitucion_y_Formalizacion CONT.SOC.pdf
YonelChuLo
 
Entorno Externo e Illllllllllllnterno.pptx
Entorno Externo e Illllllllllllnterno.pptxEntorno Externo e Illllllllllllnterno.pptx
Entorno Externo e Illllllllllllnterno.pptx
Milton Villalba
 
EVALUACION INDIVIDUAL Tarea calificada: Entrega de Práctica individual evalua...
EVALUACION INDIVIDUAL Tarea calificada: Entrega de Práctica individual evalua...EVALUACION INDIVIDUAL Tarea calificada: Entrega de Práctica individual evalua...
EVALUACION INDIVIDUAL Tarea calificada: Entrega de Práctica individual evalua...
FlorAyay1
 
Teleconferencia Accionistas Primer Trimestre 2025 VF.pdf
Teleconferencia Accionistas Primer Trimestre 2025 VF.pdfTeleconferencia Accionistas Primer Trimestre 2025 VF.pdf
Teleconferencia Accionistas Primer Trimestre 2025 VF.pdf
contactoimsa
 
proyecto individual. Hay vida después del acuerdo.docx
proyecto individual. Hay vida después del acuerdo.docxproyecto individual. Hay vida después del acuerdo.docx
proyecto individual. Hay vida después del acuerdo.docx
FlorAyay1
 
Control estadistico de la super calidad.pdf
Control estadistico de la super calidad.pdfControl estadistico de la super calidad.pdf
Control estadistico de la super calidad.pdf
AlanAranibar2
 
CIRCULAR FISCAL - CAMPAÑA RENTA 2024.ppsx
CIRCULAR FISCAL - CAMPAÑA RENTA 2024.ppsxCIRCULAR FISCAL - CAMPAÑA RENTA 2024.ppsx
CIRCULAR FISCAL - CAMPAÑA RENTA 2024.ppsx
CORPORACIONJURIDICA
 
NIA 520-Norma Internacional de Auditoría
NIA 520-Norma Internacional de AuditoríaNIA 520-Norma Internacional de Auditoría
NIA 520-Norma Internacional de Auditoría
SolHumacata
 
formaciondelaidentificacionsexualjjjjjjjj
formaciondelaidentificacionsexualjjjjjjjjformaciondelaidentificacionsexualjjjjjjjj
formaciondelaidentificacionsexualjjjjjjjj
venturafatima752
 
LeanOverviewLSKDCNSLKDCSLKDCMLSKDMCK.ppt
LeanOverviewLSKDCNSLKDCSLKDCMLSKDMCK.pptLeanOverviewLSKDCNSLKDCSLKDCMLSKDMCK.ppt
LeanOverviewLSKDCNSLKDCSLKDCMLSKDMCK.ppt
AndrsRojas77
 
campaña de marketing digital.campaña de marketing digital.pdf
campaña de marketing digital.campaña de marketing digital.pdfcampaña de marketing digital.campaña de marketing digital.pdf
campaña de marketing digital.campaña de marketing digital.pdf
pg slot
 
GRUPAL 2 MARKETING ESTRATEGIC .O.pptx
GRUPAL 2 MARKETING ESTRATEGIC     .O.pptxGRUPAL 2 MARKETING ESTRATEGIC     .O.pptx
GRUPAL 2 MARKETING ESTRATEGIC .O.pptx
giovannachise
 
INCUBESE PARA INICAR SU NEGOCIO_expo.pptx
INCUBESE PARA INICAR SU NEGOCIO_expo.pptxINCUBESE PARA INICAR SU NEGOCIO_expo.pptx
INCUBESE PARA INICAR SU NEGOCIO_expo.pptx
iancarloslopezpazos4
 
2025 Abril - Elaboración de Blogs para Impulsar el Crecimiento Empresarial c...
2025 Abril -  Elaboración de Blogs para Impulsar el Crecimiento Empresarial c...2025 Abril -  Elaboración de Blogs para Impulsar el Crecimiento Empresarial c...
2025 Abril - Elaboración de Blogs para Impulsar el Crecimiento Empresarial c...
Boundify
 
Control estadistico de la calidad cientifico.pdf
Control estadistico de la calidad cientifico.pdfControl estadistico de la calidad cientifico.pdf
Control estadistico de la calidad cientifico.pdf
AlanAranibar2
 
Procesos empresariales en SAP S/4HANA Gestión de activos fijos
Procesos empresariales en SAP S/4HANA Gestión de activos fijosProcesos empresariales en SAP S/4HANA Gestión de activos fijos
Procesos empresariales en SAP S/4HANA Gestión de activos fijos
Course17
 
Analisis deoeoeoeoeoeooeoeoeoeoeoeoeooeoe
Analisis deoeoeoeoeoeooeoeoeoeoeoeoeooeoeAnalisis deoeoeoeoeoeooeoeoeoeoeoeoeooeoe
Analisis deoeoeoeoeoeooeoeoeoeoeoeoeooeoe
DanielErazoMedina
 
(Deusto) Ray Dalio - Principios de gestión de empresas como proceder.pdf
(Deusto) Ray Dalio - Principios de gestión de empresas como proceder.pdf(Deusto) Ray Dalio - Principios de gestión de empresas como proceder.pdf
(Deusto) Ray Dalio - Principios de gestión de empresas como proceder.pdf
Mauricio Villalobos Figueroa
 
MiPYMES y su impotencia en el mercado!!!
MiPYMES y su impotencia en el mercado!!!MiPYMES y su impotencia en el mercado!!!
MiPYMES y su impotencia en el mercado!!!
LauraSofia283712
 
MATE NEGOCIOS universidad I SEMANA 2.pptx
MATE NEGOCIOS universidad I  SEMANA 2.pptxMATE NEGOCIOS universidad I  SEMANA 2.pptx
MATE NEGOCIOS universidad I SEMANA 2.pptx
ChristianCunyaPerez1
 
02 MEP_Constitucion_y_Formalizacion CONT.SOC.pdf
02 MEP_Constitucion_y_Formalizacion CONT.SOC.pdf02 MEP_Constitucion_y_Formalizacion CONT.SOC.pdf
02 MEP_Constitucion_y_Formalizacion CONT.SOC.pdf
YonelChuLo
 
Entorno Externo e Illllllllllllnterno.pptx
Entorno Externo e Illllllllllllnterno.pptxEntorno Externo e Illllllllllllnterno.pptx
Entorno Externo e Illllllllllllnterno.pptx
Milton Villalba
 
EVALUACION INDIVIDUAL Tarea calificada: Entrega de Práctica individual evalua...
EVALUACION INDIVIDUAL Tarea calificada: Entrega de Práctica individual evalua...EVALUACION INDIVIDUAL Tarea calificada: Entrega de Práctica individual evalua...
EVALUACION INDIVIDUAL Tarea calificada: Entrega de Práctica individual evalua...
FlorAyay1
 

Symfony 2 CMF