SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
DÉVELOPPER AVEC LE SYLIUSRESOURCEBUNDLE
QUI SUIS-JE ?
Arnaud Langlade (@_aRn0D)
Développeur Symfony chez Clever Age
www.clever-age.com / @CleverAge
SYLIUS
Framework E-commerce créé par Paweł Jędrzejewski
Ensemble de bundles Symfony et composants PHP e-commerce
Sylius Starndard Edition
Quelques chiffres : ~200 contributeurs / ~1700 stars
SYLIUSRESOURCEBUNDLE
Le SyliusResourceBundle vous permet de gérer rapidement et simplement vos ressources et de les
exposer via API REST.
Il n'y a pas que des composants e-commerce dans Sylius !
GESTION DES RESSOURCES? Z'AVEZ DIS CRUD?
CRUD = Create, Read, Update, Delete
UN CRUD, COMMENT ÇA FONCTIONNE?
POURQUOI LA CRÉATION DE CE BUNDLE?
Le back office de Sylius est composé d'énormement de CRUDs
Eviter la duplication de code parce que c'est mal!
Développer plus vite en automatisant des tâches
UNE SOLUTION? RESOURCECONTROLLER?
Création du ResourceController :
C'est un contrôleur générique
Plus de code, il est intialisé via une configuration
Il étend the FOSRestController
Utilisation du EventDispatcher (répartiteur d'évènement) :
Il permet de personnaliser les actions
Solution plus flexible
QUELS SONT ORM/ODM SUPPORTÉS ?
Doctrine ORM : Sylius l'utilise par défaut
Doctrine Phpcr-ODM : Sylius intègre le CMF pour gérer des contenus
Doctrine Mongodb-ODM
Bientôt sûrement plus !
ATTENTION!
Ce n'est pas un admin generator!
Il faut créer vos formulaires, vos templates et le routing (pour le moment!)
CRÉER SON CRUD EN QUELQUES MINUTES !
Par exemple, créons un CRUD pour gérer des clients (customer).
CONFIGURONS NOS RESSOURCES
sylius_resource:
    resources:
        myapp.customer:
            driver: doctrine/orm
            classes:
                model: AppBundleEntityCustomer
                repository: SyliusBundleResourceBundleDoctrineORMEntityRepository
            templates: WebBundle:Backend/Customer
        myapp.address:
            # ...
MAIS QUE SE PASSE T'IL ?
$ php app/console container:debug | grep customer
myapp.manager.customer    alias for "doctrine.orm.default_entity_manager"
myapp.controller.customer container SyliusBundleResourceBundleControllerResourceController
myapp.repository.customer container SyliusBundleResourceBundleDoctrineORMEntityRepository
$ php app/console container:debug ­­parameters
sylius.config.classes {"myapp.customer": {...}}
CONFIGURONS NOS RESSOURCES
sylius_resource:
    resources:
        myapp.customer:
            driver: doctrine/orm
            classes:
                model: AppBundleEntityCustomer
                controller: AppBundleControllerCustomerController
                repository: AppBundleRepositoryCustomerRepository
            templates: WebBundle:Backend/Customer
CRÉONS NOTRE MODÈLE
# AppBundleEntityCustomer.php;
/**
 * @ORMEntity
 * @ORMTable(name="customer")
 */
class Customer
{
    /**
     * @ORMColumn(type="string", length=100)
     */
    protected $firstName;
    /**
     * @ORMColumn(type="string", length=100)
     */
    protected $lastName;
}
CRÉONS NOTRE FORMULAIRE
// AppBundleFormTypeCustomerType.php;
class CustomerType extends AbstractResourceType
{
    public function getName()
    {
        return 'myapp_customer';
    }
}
Le formulaire doit être défini en tant que service
Pattern du nom de formulaire : nom-application_resource
AbstractResourceType permet de configurer le data_class et le validation_group
CRÉONS NOS TEMPLATES
{# create.html.twig ou update.html.twig #}
<form method="POST" action="...">
    {{ form_widget(form) }}
</form>
{# show.html.twig #}
<div>
    <p>{{ customer.firstname }}</p>
    <p>{{ customer.lastname }}</p>
</div>
{# index.html.twig #}
{% for customer in customers %}
    {{ customer.fistname }} {{ customer.lastname }}
{% endfor %}
CONFIGURONS NOS ROUTES
# app/routing.yml
myapp_customer_index:
    pattern: /customer
    defaults:
        _controller: myapp.controller.customer:indexAction
Pattern des clés des routes : nom-application_resource_action
Ne pas oublier que les contrôleurs sont définis en tant que service
Actions : index, show, create, update, delete, moveUp, moveDown, revert ou updateState
ET PAF ! ÇA FAIT DES CHOCAPICS !
Notre CRUD est prêt à l'emploi !! On crée notre API ?
EXPOSER SES CLIENTS VIA API REST
Configurer le FOSRestBundle
# app/config.yml
fos_rest:
    format_listener:
        rules:
            ­ { path: '^/', priorities: ['html', 'json'], fallback_format: html}
Le ResourceController retourne le données dans le format souhaité
GET /customer/57 HTTP/1.1
Host: myshop.com
Accept: application/json
CONFIGURER LE SÉRIALISEUR
# Resources/config/serializer/Entity.Customer.yml
AppBundleEntityCustomer:
    exclusion_policy: ALL
    properties:
        firstName:
            expose: true
            type: string
        lastName:
            expose: true
            type: string
        relations:
            ­ rel: address
            href:
                route: myapp_address_show
                parameters:
                    id: expr(object.getAddress().getId())
HTTP/1.1 200 OK
Content­Type: application/json;
{
    "id": 2,
    "firstName": "Arnaud",
    "lastName": "Langlade",
    "_links": {
        "self": {
            "href": "/address/2"
        }
    }
}
C'EST TOUT ?
Lionframe (Rapid RESTful API Development)
Génération automatique des formulaires et du routing
PLUS DE FLEXIBILITÉ ?
Le comportement des méthodes du ResourceController est configurable
CONFIGURER LES METHODES DU RESOURCECONTROLLER
Ajouter une entrée _sylius dans le tableau defaults des routes
# app/routing.yml
myapp_customer_create:
    defaults:
        _sylius:
            template: WebBundle:Backend/Customer:custom_create.html.twig
RÉDIRIGER L'UTILISATEUR
# app/routing.yml
myapp_product_create:
    pattern: /new
    methods: [GET, POST]
        _controller: myapp.controller.product:createAction
        _sylius:
            redirect: myapp_product_index
            # Ou
            redirect:
                route: myapp_product_show
                parameters: { name: resource.sku }
RÉCUPÉRER DES DONNÉES DANS LA BDD
# app/routing.yml
myapp_customer_index:
    pattern: /
    methods: [GET]
    defaults:
        _controller: myapp.controller.customer:indexAction
        _sylius:
            # $repository­>findBy(["group" => 'my_group'])
            criteria:
                group: my_group
            # $request­>get('criteria')
            filterable: true
RÉCUPÉRER DES DONNÉES DANS LA BDD
# app/routing.yml
myapp_customer_index:
    pattern: /
    methods: [GET]
    defaults:
        _controller: myapp.controller.customer:indexAction
        _sylius:
            # $repository­>findByFilter($request­>get('filter'))
            repository:
                method: findByFilter
                arguments: [$filter]
LISTER SES RESSOURCES
# app/routing.yml
myapp_customer_index:
    pattern: /
    methods: [GET]
    defaults:
        _controller: myapp.controller.customer:indexAction
        _sylius:
            # Trie
            sorting:
                updatedAt: desc # Ou asc
            # $request­>get('sorting');
            sortable: true
            # Paginate
            paginate: 50
MOTEUR D'EXPRESSION
# app/routing.yml
myapp_order_index:
    path: /orders
    methods: [GET]
    defaults:
        _controller: app.controller.order:indexAction
        _sylius:
            repository:
                # $repository­>findOrderByCustomer([$customer]);
                method: findOrderByCustomer
                arguments: ["expr:service('security.context').getToken().getUser()"]
VOUS VOULEZ MUTUALISER VOTRE CODE ?
SYLIUS FONCTIONNE AVEC DES BUNDLES
Ils doivent être facilement étendables
Ils peuvent supporter plusieurs "drivers" (ORM/ODM)
Ils ne doivent être couplés les uns aux autres
LA CONFIGURATION SÉMANTIQUE
customer_bundle:
    driver: doctrine/orm
    templates:
        customer: CustomerBundle:Backend/Customer
        address: ...
    validation_groups:
        customer: [myapp]
        address: ...
    classes:
        customer:
            model: MyappCustomerBundleModelCustomer
            controller: SyliusBundleResourceBundleControllerResourceController
            repository: SyliusBundleResourceBundleDoctrineORMEntityRepository
            form:
                default: MyappCustomerBundleFormTypeCustomerType
                choice: MyappCustomerBundleFormTypeCustomerChoiceType
        address: ...
MAIS QUE SE PASSE T'IL?
$ php app/console container:debug | grep customer
myapp.controller.customer container SyliusBundleResourceBundleControllerResourceController
myapp.manager.customer    n/a       alias for doctrine.orm.default_entity_manager
myapp.repository.customer container SyliusBundleResourceBundleDoctrineORMEntityRepository
myapp.form.type.customer  container myappCustomerBundleFormTypeCustomerType
$ php app/console container:debug ­­parameters | grep customer
myapp.model.customer.class          myappCustomerBundleModelCustomer
myapp.model.customer.class          myappCustomerBundleModelCustomer
myapp.controller.customer.class     SyliusBundleResourceBundleControllerResourceController
myapp.repository.customer.class     SyliusBundleResourceBundleDoctrineORMEntityRepository
myapp.form.type.customer.class      myappCustomerBundleFormTypeCustomerType
myapp.validation_group.customer     ["myapp"]
myapp_customer.driver               doctrine/orm
ETENDRE FACILEMENT VOTRE BUNDLE
Utiliser l'injecteur de dépendences (Dependency Injector)
Déclarer votre classe en tant mapped-superclass (évènement loadClassMetadata)
GÉRER PLUSIEURS DRIVERS
Créer votre "Doctrine Mapping Driver"
Fournir plusieurs implementations Doctrine pour un modèle
Vos documents et entités sont dans le même namespace
LIMITER LE COUPLAGE DE VOS BUNDLES
Utiliser le Resolve Target Entity Listener
Définir des relations entre différentes entités sans les écrire en dur
Il ré-écrit les paramètres targetEntity dans le mapping de votre modèle
<!­­ Resources/config/doctrine/order.xml ­­>
<one­to­many field="orders" target­entity="SyliusComponentOrderModelOrderInterface">
    <!­­ ... ­­>
</one­to­many>
VOUS ÊTES ÉQUIPÉS POUR CONSTRUIRE VOS BUNDLES!
GO TO THE FUTURE!
Refactoring de la SyliusResourceExtension
Rendre le système plus flexible
Uniformiser la configuration
De nouveaux FormType ?
Un datagrid ?
VENEZ CONTRIBUER!
Merci à tous les contributeurs!
N'hésister pas à nous soumettre vos PRs...
... surtout si vous aimez écrire de la doc :D !
MERCI! QUESTIONS ?
Arnaud Langlade
Twiter @_aRn0D
Sylius : www.sylius.org

Contenu connexe

En vedette

Php trollons mais trollons bien (Bdx.io 2015)
Php trollons mais trollons bien (Bdx.io 2015)Php trollons mais trollons bien (Bdx.io 2015)
Php trollons mais trollons bien (Bdx.io 2015)Arnaud Langlade
 
Programmation STUPID vs SOLID (PHP Meetup)
Programmation STUPID vs SOLID (PHP Meetup)Programmation STUPID vs SOLID (PHP Meetup)
Programmation STUPID vs SOLID (PHP Meetup)Arnaud Langlade
 
Boostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditBoostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditauto entrepreneur
 
La Console Symfony
La Console Symfony La Console Symfony
La Console Symfony Imad ZAIRIG
 
Conference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisConference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisChipway
 
symfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnelssymfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les ProfessionnelsFabien Potencier
 
Drupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnanteDrupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnanteVanessa David
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)Fabien Potencier
 
Exposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend FrameworkExposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend FrameworkHugo Hamon
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ ekino
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
Design patterns avec Symfony
Design patterns avec SymfonyDesign patterns avec Symfony
Design patterns avec SymfonyMohammed Rhamnia
 
Resource Bundle
Resource BundleResource Bundle
Resource BundleSunil OS
 
Meetic Backend Mutation With Symfony
Meetic Backend Mutation With SymfonyMeetic Backend Mutation With Symfony
Meetic Backend Mutation With SymfonymeeticTech
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesXavier Gorse
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptxEsokia
 

En vedette (20)

Getting started with Sylius
Getting started with SyliusGetting started with Sylius
Getting started with Sylius
 
Php trollons mais trollons bien (Bdx.io 2015)
Php trollons mais trollons bien (Bdx.io 2015)Php trollons mais trollons bien (Bdx.io 2015)
Php trollons mais trollons bien (Bdx.io 2015)
 
Programmation STUPID vs SOLID (PHP Meetup)
Programmation STUPID vs SOLID (PHP Meetup)Programmation STUPID vs SOLID (PHP Meetup)
Programmation STUPID vs SOLID (PHP Meetup)
 
Php spec en 5 minutes
Php spec en 5 minutesPhp spec en 5 minutes
Php spec en 5 minutes
 
Boostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditBoostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpedit
 
La Console Symfony
La Console Symfony La Console Symfony
La Console Symfony
 
Drupal 8
Drupal 8Drupal 8
Drupal 8
 
Conference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisConference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à Paris
 
symfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnelssymfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnels
 
Symfonytn
SymfonytnSymfonytn
Symfonytn
 
Drupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnanteDrupal 8 + Symfony 2 = une équipe gagnante
Drupal 8 + Symfony 2 = une équipe gagnante
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
 
Exposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend FrameworkExposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Design patterns avec Symfony
Design patterns avec SymfonyDesign patterns avec Symfony
Design patterns avec Symfony
 
Resource Bundle
Resource BundleResource Bundle
Resource Bundle
 
Meetic Backend Mutation With Symfony
Meetic Backend Mutation With SymfonyMeetic Backend Mutation With Symfony
Meetic Backend Mutation With Symfony
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptx
 

Similaire à Développer avec le sylius resourcebundle (Symfony live Paris 2015)

Bureau Metier - Version 20061010
Bureau Metier - Version 20061010Bureau Metier - Version 20061010
Bureau Metier - Version 20061010Didier Girard
 
Enrichir vos contenus Wordpress avec les API - WPTech 2015
Enrichir vos contenus Wordpress avec les API - WPTech 2015Enrichir vos contenus Wordpress avec les API - WPTech 2015
Enrichir vos contenus Wordpress avec les API - WPTech 2015PXNetwork
 
démonstration code source site web ecole.docx
démonstration code source site web ecole.docxdémonstration code source site web ecole.docx
démonstration code source site web ecole.docxVincentBweka
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 
BlueXML Developer Studio
BlueXML Developer StudioBlueXML Developer Studio
BlueXML Developer Studiobch
 
Wa370 g formation-ibm-websphere-application-server-v7-administration-on-windows
Wa370 g formation-ibm-websphere-application-server-v7-administration-on-windowsWa370 g formation-ibm-websphere-application-server-v7-administration-on-windows
Wa370 g formation-ibm-websphere-application-server-v7-administration-on-windowsCERTyou Formation
 
TIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisationTIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisationThe Incredible Automation Day
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPrestaShop
 
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...CERTyou Formation
 
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...CERTyou Formation
 
Wb851 g formation-developper-des-applications-dans-ibm-business-process-manag...
Wb851 g formation-developper-des-applications-dans-ibm-business-process-manag...Wb851 g formation-developper-des-applications-dans-ibm-business-process-manag...
Wb851 g formation-developper-des-applications-dans-ibm-business-process-manag...CERTyou Formation
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Tv382 g formation-ibm-tivoli-monitoring-6-2-1-agent-builder
Tv382 g formation-ibm-tivoli-monitoring-6-2-1-agent-builderTv382 g formation-ibm-tivoli-monitoring-6-2-1-agent-builder
Tv382 g formation-ibm-tivoli-monitoring-6-2-1-agent-builderCERTyou Formation
 
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTS
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTSERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTS
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTSAbdou Lahad SYLLA
 
Wb753 g formation-developper-des-applications-pour-ibm-websphere-enterprise-s...
Wb753 g formation-developper-des-applications-pour-ibm-websphere-enterprise-s...Wb753 g formation-developper-des-applications-pour-ibm-websphere-enterprise-s...
Wb753 g formation-developper-des-applications-pour-ibm-websphere-enterprise-s...CERTyou Formation
 
Wa855 g formation-websphere-application-server-v8-5-5-administration
Wa855 g formation-websphere-application-server-v8-5-5-administrationWa855 g formation-websphere-application-server-v8-5-5-administration
Wa855 g formation-websphere-application-server-v8-5-5-administrationCERTyou Formation
 

Similaire à Développer avec le sylius resourcebundle (Symfony live Paris 2015) (20)

Bureau Metier - Version 20061010
Bureau Metier - Version 20061010Bureau Metier - Version 20061010
Bureau Metier - Version 20061010
 
Formation php pdo
Formation php pdoFormation php pdo
Formation php pdo
 
Enrichir vos contenus Wordpress avec les API - WPTech 2015
Enrichir vos contenus Wordpress avec les API - WPTech 2015Enrichir vos contenus Wordpress avec les API - WPTech 2015
Enrichir vos contenus Wordpress avec les API - WPTech 2015
 
démonstration code source site web ecole.docx
démonstration code source site web ecole.docxdémonstration code source site web ecole.docx
démonstration code source site web ecole.docx
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
BlueXML Developer Studio
BlueXML Developer StudioBlueXML Developer Studio
BlueXML Developer Studio
 
Wa370 g formation-ibm-websphere-application-server-v7-administration-on-windows
Wa370 g formation-ibm-websphere-application-server-v7-administration-on-windowsWa370 g formation-ibm-websphere-application-server-v7-administration-on-windows
Wa370 g formation-ibm-websphere-application-server-v7-administration-on-windows
 
TIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisationTIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisation
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
 
Retour d'expérience sur PowerShell
Retour d'expérience sur PowerShellRetour d'expérience sur PowerShell
Retour d'expérience sur PowerShell
 
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...
 
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...
D8 l51g formation-les-fondamentaux-du-developpement-d-applications-avec-ibm-d...
 
Wb851 g formation-developper-des-applications-dans-ibm-business-process-manag...
Wb851 g formation-developper-des-applications-dans-ibm-business-process-manag...Wb851 g formation-developper-des-applications-dans-ibm-business-process-manag...
Wb851 g formation-developper-des-applications-dans-ibm-business-process-manag...
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Izzili-Aspaway : Retour d’expérience éditeur full Cloud & SaaS
Izzili-Aspaway : Retour d’expérience éditeur full Cloud & SaaSIzzili-Aspaway : Retour d’expérience éditeur full Cloud & SaaS
Izzili-Aspaway : Retour d’expérience éditeur full Cloud & SaaS
 
Tv382 g formation-ibm-tivoli-monitoring-6-2-1-agent-builder
Tv382 g formation-ibm-tivoli-monitoring-6-2-1-agent-builderTv382 g formation-ibm-tivoli-monitoring-6-2-1-agent-builder
Tv382 g formation-ibm-tivoli-monitoring-6-2-1-agent-builder
 
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTS
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTSERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTS
ERP : Etude et Mise en place avec Odoo 8 sous ubuntun14.04.05 LTS
 
Wb753 g formation-developper-des-applications-pour-ibm-websphere-enterprise-s...
Wb753 g formation-developper-des-applications-pour-ibm-websphere-enterprise-s...Wb753 g formation-developper-des-applications-pour-ibm-websphere-enterprise-s...
Wb753 g formation-developper-des-applications-pour-ibm-websphere-enterprise-s...
 
Wa855 g formation-websphere-application-server-v8-5-5-administration
Wa855 g formation-websphere-application-server-v8-5-5-administrationWa855 g formation-websphere-application-server-v8-5-5-administration
Wa855 g formation-websphere-application-server-v8-5-5-administration
 

Développer avec le sylius resourcebundle (Symfony live Paris 2015)