Développer sous Sylius en 40 minutes chrono

Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40
minutes chrono
Maxime Huran
Lead Developer chez Monsieur Biz
@maximehuran
Développer sous Sylius en 40 minutes chrono
• L'infra
!
• L'installa-on
"
• Les fixtures
#
• Les plugins
$
• Les resources Sylius et leur ges-on en admin
• Les State Machines
&
• Le retour des fixtures
'
L'infra
Le binaire Symfony
Coucou Jolicode ❤ : h-ps://jolicode.com/blog/mon-serveur-local-avec-le-binaire-symfony
Composer
symfony composer create-project sylius/sylius-standard sylius
Développer sous Sylius en 40 minutes chrono
Docker
• La base de données
• Mailcatcher
• Node (pour le thème)
• C'est tout pour le moment
!
L'installa)on
Docker
Développer sous Sylius en 40 minutes chrono
Serveur Symfony
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
~/.symfony/proxy.json
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Un peu de configura.on
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Composer
composer install
Et aller se faire un
☕
Installer Sylius
Développer sous Sylius en 40 minutes chrono
• sylius:install:database
• sylius:fixtures:load
• sylius:theme:assets:install
Builder le thème
• yarn install
• yarn run gulp ou yarn build
Makefiles
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Globalement au setup on u.lise
• make project.infra.update
• make project.install
Au quo&dien
• make up
• make down
En ac&on !
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Le résultat
Développer sous Sylius en 40 minutes chrono
Les fixtures
Le Fixture Bundle
• Suites : collec-on de fixtures
• Fixtures : nos en-tés
• Listeners : exécuter du code à certains moment du chargement
des fixtures
La doc : h)ps://docs.sylius.com/en/1.4/componentsandbundles/bundles/SyliusFixturesBundle/index.html
Créer sa suite de fixtures
imports:
- { resource: "fixtures.yaml" }
apps/sylius/src/Resources/config/app/config.yaml
sylius_fixtures:
suites:
monsieurgeek:
listeners: ~
fixtures: ~
apps/sylius/src/Resources/config/app/fixtures.yaml
La langue et la devise
sylius_fixtures:
suites:
monsieurgeek:
[...]
fixtures:
locale: ~
currency:
options:
currencies: ['EUR']
Les zones
sylius_fixtures:
suites:
monsieurgeek:
[...]
fixtures:
geographical:
options:
countries:
- "FR"
zones:
FR:
name: "France"
countries:
- "FR"
Le channel
sylius_fixtures:
suites:
monsieurgeek:
[...]
fixtures:
channel:
options:
custom:
monsieurgeek:
name: "Monsieur Geek"
code: "monsieurgeek"
locales:
- "%locale%"
currencies:
- "EUR"
enabled: true
hostname: "monsieurgeek.wip"
default_locale: "%locale%"
account_verification_required: false
Le mode de paiment
sylius_fixtures:
suites:
monsieurgeek:
[...]
fixtures:
payment_method:
options:
custom:
bank_transfer:
code: "bank_transfer"
name: "Virement"
description: "Paiement par virement bancaire"
instructions: "Envoyez votre virement sous 6 jours : FR7630004000031234567890143"
channels:
- "monsieurgeek"
enabled: true
Le groupe de client
sylius_fixtures:
suites:
monsieurgeek:
[...]
fixtures:
customer_group:
options:
custom:
retail:
code: "retail"
name: "Retail"
Les clients
sylius_fixtures:
suites:
monsieurgeek:
[...]
fixtures:
shop_user:
name: "shop_user"
options:
random: 20
custom:
-
email: "mah@mbiz.io"
first_name: "John"
last_name: "Doe"
password: "Qwerty123"
Les user admin
sylius_fixtures:
suites:
monsieurgeek:
[...]
fixtures:
admin_user:
name: "admin_user"
options:
custom:
-
email: "sylius@example.com"
username: "sylius"
password: "sylius"
enabled: true
locale_code: "%locale%"
first_name: "John"
last_name: "Doe"
-
email: "api@example.com"
username: "api"
password: "sylius-api"
enabled: true
locale_code: "%locale%"
first_name: "Luke"
last_name: "Brushwood"
api: true
Les taxons
sylius_fixtures:
suites:
monsieurgeek:
[...]
fixtures:
taxon:
options:
custom:
category:
name: 'Monsieur Geek'
code: 'category'
children:
nes:
name: 'Jeux NES'
code: 'jeux-nes'
slug: 'jeux-nes'
snes:
name: 'Jeux Super NES'
code: 'jeux-snes'
slug: 'jeux-snes'
nintendo_sixty_fouuuuur:
name: 'Jeux Nintendo 64'
code: 'jeux-n64'
slug: 'jeux-n64'
game_cube:
name: 'Jeux Game Cube'
code: 'jeux-game-cube'
slug: 'jeux-game-cube'
wii:
name: 'Jeux Wii'
code: 'jeux-wii'
slug: 'jeux-wii'
etc...
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Créer une fixture
services:
sylius.fixture.nintendo_product:
class: AppFixtureNintendoProductFixture
arguments:
- "@sylius.fixture.product"
tags: ['sylius_fixtures.fixture']
apps/sylius/src/Resources/config/services.yaml
apps/sylius/src/Resources/config/app/fixtures.yaml
apps/sylius/src/Fixture/NintendoProductFixture.php
apps/sylius/src/Fixture/NintendoProductFixture.php
apps/sylius/src/Fixture/NintendoProductFixture.php
Développer sous Sylius en 40 minutes chrono
Lancer nos fixtures
ou make sylius.fixtures.load
Développer sous Sylius en 40 minutes chrono
Des filtres !
L'u$lité des plugins
• Ne pas réinventer la roue
• Réu2liser ses devs sur d'autres projets
• Plugin !== Bundle
Mise à jour de l'infra
Docker compose
services:
[...]
elasticsearch:
build:
context: ./elasticsearch/
args:
USER_UID: ${USER_UID}
volumes:
- esdata:/usr/share/elasticsearch/data:rw
environment:
- "xpack.security.enabled=false"
ports:
- "9200:9200"
- "9300:9300"
elasticsearch-hq:
image: elastichq/elasticsearch-hq
ports:
- "5000:5000"
environment:
- HQ_DEFAULT_URL=http://elasticsearch:9200
links:
- elasticsearch
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Installa'on du plugin BitBag Elas'cSearch
composer require bitbag/elasticsearch-plugin
Configura)on du plugin
RTFM
h"ps://github.com/BitBagCommerce/SyliusElas9csearchPlugin/blob/master/README.md
Mise à jour du makefile
Des plugins intéressants
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Fini la rigolade !
Passons aux choses sérieuses !
Et ceux qui se sont endormi, réveillez-vous
!
Crea%on d'une en%té
Développer sous Sylius en 40 minutes chrono
<?php
namespace AppEntityCustomer;
use [...]
use SyliusComponentCoreModelCustomer as BaseCustomer;
/**
* @Entity
* @Table(name="sylius_customer")
*/
class Customer extends BaseCustomer
{
}
apps/sylius/src/Entity/Customer/Customer.php
<?php
namespace AppEntityEditor;
use [...]
/**
* @ORMEntity
* @ORMTable(name="app_editor")
* @package AppBundleEntity
*/
class Editor implements ResourceInterface
{
/**
* @ORMId
* @ORMGeneratedValue
* @ORMColumn(type="integer")
*/
private $id;
/**
* @ORMColumn(type="string", length=255)
*/
private $name;
/**
* @ORMColumn(type="string", length=255)
*/
private $code;
/**
* @ORMColumn(type="string", length=255)
*/
private $email;
apps/sylius/src/Entity/Editor/Editor.php
Développer sous Sylius en 40 minutes chrono
Déclara'on d'une ressource Sylius
sylius_resource:
resources:
app.editor:
driver: doctrine/orm
classes:
model: AppEntityEditorEditor
form: AppFormTypeEditorType
apps/sylius/src/Resources/config/resources.yaml
<?php
namespace AppFormType;
use [...]
final class EditorType extends AbstractResourceType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class)
->add('email', TextType::class)
->addEventSubscriber(new AddCodeFormSubscriber())
;
}
}
apps/sylius/src/Form/Type/EditorType.php
Développer sous Sylius en 40 minutes chrono
Afficher les CRUD en admin ?
SyliusGridBundle !
app_admin:
resource: 'routing/admin.yaml'
prefix: /admin
apps/sylius/src/Resources/config/routes.yaml
app_admin_editor:
resource: 'admin/editor.yaml'
apps/sylius/src/Resources/config/routing/admin.yaml
app_admin_editor:
resource: |
alias: app.editor
section: admin
templates: SyliusAdminBundle:Crud
redirect: update
grid: app_admin_editor
vars:
all:
subheader: app.ui.editor
index:
icon: 'file image outline'
type: sylius.resource
apps/sylius/src/Resources/config/routing/admin/editor.yaml
[...]
sylius_grid:
grids:
app_admin_editor:
driver:
name: doctrine/orm
options:
class: AppEntityEditorEditor
fields:
name:
type: string
label: sylius.ui.name
code:
type: string
label: sylius.ui.code
actions:
main:
create:
type: create
item:
update:
type: update
delete:
type: delete
apps/sylius/config/packages/_sylius.yaml
URL = /admin/editors/
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Y accéder depuis l'admin ?
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
services:
[...]
app.listener.admin.menu_builder:
class: AppMenuAdminMenuListener
tags:
- { name: kernel.event_listener, event: sylius.menu.admin.main, method: addAdminMenuItems }
apps/sylius/src/Resources/config/services.yaml
<?php
namespace AppMenu;
use SyliusBundleUiBundleMenuEventMenuBuilderEvent;
final class AdminMenuListener
{
public function addAdminMenuItems(MenuBuilderEvent $event): void
{
$menu = $event->getMenu();
$newSubmenu = $menu
->addChild('monsieur-geek')
->setLabel('app.ui.monsieur_geek')
;
$newSubmenu
->addChild('editors', ['route' => 'app_admin_editor_index'])
->setLabelAttribute('icon', 'id badge')
->setLabel('app.ui.editors')
;
}
}
apps/sylius/src/Menu/AdminMenuListener.php
Développer sous Sylius en 40 minutes chrono
Les traduc+ons
Mais ça vous savez sûrement faire !
app:
ui:
new_editor: 'Création d''un éditeur'
edit_editor: 'Modification d''un éditeur'
monsieur_geek: 'Monsieur Geek'
editors: 'Éditeurs'
editor: 'Éditeur'
apps/sylius/translations/messages.fr.yml
Développer sous Sylius en 40 minutes chrono
Aller plus loin :
Rendre le champ code non éditable
dispo sur le repository Github
Rela%on avec une en%té
Modifica(on de l'en(té Editor
Développer sous Sylius en 40 minutes chrono
Créa%on d'une Form Extension
services:
[...]
app.form.extension.type.product:
class: AppFormExtensionProductTypeExtension
arguments:
- "%sylius.model.product.class%"
- "%sylius.form.type.product.validation_groups%"
- "@sylius.product_variant_resolver.default"
- "@sylius.factory.product_attribute_value"
- "@sylius.translation_locale_provider"
tags:
- { name: form.type_extension, extended_type: SyliusBundleProductBundleFormTypeProductType }
apps/sylius/src/Resources/config/services.yaml
<?php
namespace AppFormExtension;
use [...]
class ProductTypeExtension extends AbstractResourceType implements FormTypeExtensionInterface
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('editor', EntityType::class, [
'class' => Editor::class,
'choice_label' => 'name',
'choice_value' => 'code',
'label' => 'app.ui.editor',
'required' => false,
]);
}
public function getExtendedType(): string
{
return ProductType::class;
}
}
apps/sylius/src/Form/Extension/ProductTypeExtension.php
Affichage dans la page admin produit
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Aller plus loin :
Ajouter le champ sans surcharger le template avec un événement !
dispo sur le repository Github
State machine
Déclara'on de notre state machine
winzou_state_machine:
app_editor:
class: "%app.model.editor.class%"
property_path: status
graph: app_editor
state_machine_class: "%sylius.state_machine.class%"
states:
new: ~
approved: ~
transitions:
approve:
from: ['new'] # Can be many
to: 'approved' # Always one of course
apps/sylius/src/Resources/config/app/config.yaml
Développer sous Sylius en 40 minutes chrono
Changeons notre en,té (encore)
Développer sous Sylius en 40 minutes chrono
Affichons le dans la grid
Mais pas dans le form car non éditable
Développer sous Sylius en 40 minutes chrono
Créa%on de la route
app_admin_editor_approve:
path: admin/editor/{id}/approve
methods: ['PUT']
defaults:
_controller: app.controller.editor:applyStateMachineTransitionAction
_sylius:
state_machine:
graph: app_editor
transition: approve
redirect: referer
apps/sylius/src/Resources/config/routing/admin/editor.yaml
Appliquons ce-e transi1on !
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Ajouter un callback dans une transi2on
Le code complet pour l'envoi de mail sur le dépôt Github
Le retour de la fixture
Ajout de la fixture sur notre en0té
services:
[...]
AppFixtureFactoryEditorExampleFactory:
arguments:
- '@app.factory.editor'
AppFixtureEditorFixture:
arguments:
- '@app.manager.editor'
- '@AppFixtureFactoryEditorExampleFactory'
tags:
- { name: sylius_fixtures.fixture }
apps/sylius/src/Resources/config/services.yaml
<?php
namespace AppFixture;
use [...]
final class EditorFixture extends AbstractResourceFixture
{
public function getName(): string
{
return 'editor';
}
protected function configureResourceNode(ArrayNodeDefinition $resourceNode): void
{
$resourceNode
->children()
->scalarNode('name')->cannotBeEmpty()->end()
->scalarNode('email')->cannotBeEmpty()->end()
->scalarNode('code')->cannotBeEmpty()->end()
;
}
}
apps/sylius/src/Fixture/EditorFixture.php
final class EditorExampleFactory extends AbstractExampleFactory
{
protected function configureOptions(OptionsResolver $resolver): void
{
$resolver
->setDefault('name', function(Options $options): string {
return $this->faker->company;
})
->setDefault('code', function(Options $options): string {
return $this->faker->uuid;
})
->setDefault('email', function(Options $options): string {
return $this->faker->email;
})
;
}
[...]
}
public function create(array $options = [])
{
$options = $this->optionResolver->resolve($options);
/** @var EditorInterface $editor */
$editor = $this->factory->createNew();
$editor->setCode($options['code']);
$editor->setName($options['name']);
$editor->setEmail($options['email']);
return $editor;
}
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Ges$on des State Machine dans une fixture
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Développer sous Sylius en 40 minutes chrono
Ce que l'on a appris
!
• L'infra et l'installa.on
• SyliusFixtureBundle
• Créer un en.té et u.liser le
SyliusGridBundle
• Personnalisa.on de l'admin (Menu et
formulaire)
• State Machine
• Créer une fixture pour son en.té
h"ps://github.com/monsieurbiz/sylius-
Les slides seront également mis à votre disposi3on
!
Ce n'est qu'une mise en bouche !
Merci !
Vos ques(ons
Sylius 1.5 est sor/ ce midi
!
1 of 154

Recommended

Alphorm.com Support de la Formation Git by
Alphorm.com Support de la Formation Git Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git Alphorm
26.3K views218 slides
Getting started with Ansible by
Getting started with AnsibleGetting started with Ansible
Getting started with AnsibleIvan Serdyuk
495 views83 slides
Introduction to yocto by
Introduction to yoctoIntroduction to yocto
Introduction to yoctoAlex Gonzalez
27K views49 slides
우아한 모노리스 by
우아한 모노리스우아한 모노리스
우아한 모노리스Arawn Park
6.7K views59 slides
Benchmarking NGINX for Accuracy and Results by
Benchmarking NGINX for Accuracy and ResultsBenchmarking NGINX for Accuracy and Results
Benchmarking NGINX for Accuracy and ResultsNGINX, Inc.
2.8K views28 slides
Python (Jinja2) Templates for Network Automation by
Python (Jinja2) Templates for Network AutomationPython (Jinja2) Templates for Network Automation
Python (Jinja2) Templates for Network AutomationRick Sherman
5.4K views21 slides

More Related Content

What's hot

Schedulers and Timers in Akka by
Schedulers and Timers in AkkaSchedulers and Timers in Akka
Schedulers and Timers in AkkaKnoldus Inc.
154 views15 slides
Scouter와 influx db – grafana 연동 가이드 by
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
3.8K views8 slides
Jenkins Pipelines by
Jenkins PipelinesJenkins Pipelines
Jenkins PipelinesSteffen Gebert
10.1K views46 slides
Introduction to Gitlab by
Introduction to GitlabIntroduction to Gitlab
Introduction to GitlabJulien Pivotto
20.7K views22 slides
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016 by
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
11.6K views64 slides
Drone CI/CD 自動化測試及部署 by
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Bo-Yi Wu
1.5K views95 slides

What's hot(20)

Schedulers and Timers in Akka by Knoldus Inc.
Schedulers and Timers in AkkaSchedulers and Timers in Akka
Schedulers and Timers in Akka
Knoldus Inc.154 views
Scouter와 influx db – grafana 연동 가이드 by Ji-Woong Choi
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
Ji-Woong Choi3.8K views
Introduction to Gitlab by Julien Pivotto
Introduction to GitlabIntroduction to Gitlab
Introduction to Gitlab
Julien Pivotto20.7K views
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016 by Amazon Web Services Korea
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
Drone CI/CD 自動化測試及部署 by Bo-Yi Wu
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
Bo-Yi Wu1.5K views
AEM + MongoDB: How to Scale and Operate Large Digital Asset Management Systems by MongoDB
AEM + MongoDB: How to Scale and Operate Large Digital Asset Management SystemsAEM + MongoDB: How to Scale and Operate Large Digital Asset Management Systems
AEM + MongoDB: How to Scale and Operate Large Digital Asset Management Systems
MongoDB1.9K views
Ansible tips & tricks by bcoca
Ansible tips & tricksAnsible tips & tricks
Ansible tips & tricks
bcoca24.1K views
Hadoop REST API Security with Apache Knox Gateway by DataWorks Summit
Hadoop REST API Security with Apache Knox GatewayHadoop REST API Security with Apache Knox Gateway
Hadoop REST API Security with Apache Knox Gateway
DataWorks Summit12.9K views
[오픈소스컨설팅]Java Performance Tuning by Ji-Woong Choi
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
Ji-Woong Choi86.7K views
Formation GIT gratuite par ippon 2014 by Ippon
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
Ippon12.9K views
IT Automation with Ansible by Rayed Alrashed
IT Automation with AnsibleIT Automation with Ansible
IT Automation with Ansible
Rayed Alrashed15.7K views
Fluentd with MySQL by I Goo Lee
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQL
I Goo Lee2.4K views
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver] by MongoDB
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
MongoDB5.4K views
[오픈소스컨설팅] 스카우터 사용자 가이드 2020 by Ji-Woong Choi
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
Ji-Woong Choi4.3K views
Kubernetes & helm 활용 by SK Telecom
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용
SK Telecom10.6K views
HTML 語法教學 by Shengyou Fan
HTML 語法教學HTML 語法教學
HTML 語法教學
Shengyou Fan4.4K views
프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트) by Amazon Web Services Korea
프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트)프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트)
프론트엔드 개발자를 위한 서버리스 - 윤석찬 (AWS 테크에반젤리스트)

Similar to Développer sous Sylius en 40 minutes chrono

20130528 solution linux_frousseau_nopain_webdev by
20130528 solution linux_frousseau_nopain_webdev20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdevFrank Rousseau
1.3K views78 slides
Future of Development and Deployment using Docker by
Future of Development and Deployment using DockerFuture of Development and Deployment using Docker
Future of Development and Deployment using DockerTamer Abdul-Radi
1.1K views41 slides
はじめてのSymfony2 by
はじめてのSymfony2はじめてのSymfony2
はじめてのSymfony2Tomohiro MITSUMUNE
4.7K views21 slides
Web versus Native: round 1! by
Web versus Native: round 1!Web versus Native: round 1!
Web versus Native: round 1!Chris Mills
2.5K views69 slides
Hands-on with the Symfony2 Framework by
Hands-on with the Symfony2 FrameworkHands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkRyan Weaver
9.3K views73 slides
OpenSource ToolChain for the Hybrid Cloud by
OpenSource ToolChain for the Hybrid CloudOpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid CloudIsaac Christoffersen
790 views45 slides

Similar to Développer sous Sylius en 40 minutes chrono(20)

20130528 solution linux_frousseau_nopain_webdev by Frank Rousseau
20130528 solution linux_frousseau_nopain_webdev20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev
Frank Rousseau1.3K views
Future of Development and Deployment using Docker by Tamer Abdul-Radi
Future of Development and Deployment using DockerFuture of Development and Deployment using Docker
Future of Development and Deployment using Docker
Tamer Abdul-Radi1.1K views
Web versus Native: round 1! by Chris Mills
Web versus Native: round 1!Web versus Native: round 1!
Web versus Native: round 1!
Chris Mills2.5K views
Hands-on with the Symfony2 Framework by Ryan Weaver
Hands-on with the Symfony2 FrameworkHands-on with the Symfony2 Framework
Hands-on with the Symfony2 Framework
Ryan Weaver9.3K views
OSCamp #4 on Foreman | CLI tools with Foreman by Martin Bačovský by NETWAYS
OSCamp #4 on Foreman | CLI tools with Foreman by Martin BačovskýOSCamp #4 on Foreman | CLI tools with Foreman by Martin Bačovský
OSCamp #4 on Foreman | CLI tools with Foreman by Martin Bačovský
NETWAYS83 views
Dethroning Grunt: Simple and Effective Builds with gulp.js by Jay Harris
Dethroning Grunt: Simple and Effective Builds with gulp.jsDethroning Grunt: Simple and Effective Builds with gulp.js
Dethroning Grunt: Simple and Effective Builds with gulp.js
Jay Harris2.8K views
Codetainer: a Docker-based browser code 'sandbox' by Jen Andre
Codetainer: a Docker-based browser code 'sandbox'Codetainer: a Docker-based browser code 'sandbox'
Codetainer: a Docker-based browser code 'sandbox'
Jen Andre3.8K views
Introducing the Seneca MVP framework for Node.js by Richard Rodger
Introducing the Seneca MVP framework for Node.jsIntroducing the Seneca MVP framework for Node.js
Introducing the Seneca MVP framework for Node.js
Richard Rodger4.4K views
QConSP 2015 - Dicas de Performance para Aplicações Web by Fabio Akita
QConSP 2015 - Dicas de Performance para Aplicações WebQConSP 2015 - Dicas de Performance para Aplicações Web
QConSP 2015 - Dicas de Performance para Aplicações Web
Fabio Akita4.1K views
Modern tooling to assist with developing applications on FreeBSD by Sean Chittenden
Modern tooling to assist with developing applications on FreeBSDModern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSD
Sean Chittenden861 views
Empowering the “Mobile Web” with Chris Mills by FITC
Empowering the “Mobile Web” with Chris MillsEmpowering the “Mobile Web” with Chris Mills
Empowering the “Mobile Web” with Chris Mills
FITC1.4K views
Empowering the Mobile Web - Mills by Codemotion
Empowering the Mobile Web - MillsEmpowering the Mobile Web - Mills
Empowering the Mobile Web - Mills
Codemotion603 views
Empowering the "mobile web" by Chris Mills
Empowering the "mobile web"Empowering the "mobile web"
Empowering the "mobile web"
Chris Mills1.1K views
Baking in the cloud with packer and puppet by Alan Parkinson
Baking in the cloud with packer and puppetBaking in the cloud with packer and puppet
Baking in the cloud with packer and puppet
Alan Parkinson2.8K views
Working With The Symfony Admin Generator by John Cleveley
Working With The Symfony Admin GeneratorWorking With The Symfony Admin Generator
Working With The Symfony Admin Generator
John Cleveley31.2K views
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond by DrupalDay
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
DrupalDay924 views

Recently uploaded

PORTFOLIO 1 (Bret Michael Pepito).pdf by
PORTFOLIO 1 (Bret Michael Pepito).pdfPORTFOLIO 1 (Bret Michael Pepito).pdf
PORTFOLIO 1 (Bret Michael Pepito).pdfbrejess0410
8 views6 slides
Is Entireweb better than Google by
Is Entireweb better than GoogleIs Entireweb better than Google
Is Entireweb better than Googlesebastianthomasbejan
12 views1 slide
How to think like a threat actor for Kubernetes.pptx by
How to think like a threat actor for Kubernetes.pptxHow to think like a threat actor for Kubernetes.pptx
How to think like a threat actor for Kubernetes.pptxLibbySchulze1
5 views33 slides
IETF 118: Starlink Protocol Performance by
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol PerformanceAPNIC
354 views22 slides
Marketing and Community Building in Web3 by
Marketing and Community Building in Web3Marketing and Community Building in Web3
Marketing and Community Building in Web3Federico Ast
12 views64 slides
information by
informationinformation
informationkhelgishekhar
9 views4 slides

Recently uploaded(9)

PORTFOLIO 1 (Bret Michael Pepito).pdf by brejess0410
PORTFOLIO 1 (Bret Michael Pepito).pdfPORTFOLIO 1 (Bret Michael Pepito).pdf
PORTFOLIO 1 (Bret Michael Pepito).pdf
brejess04108 views
How to think like a threat actor for Kubernetes.pptx by LibbySchulze1
How to think like a threat actor for Kubernetes.pptxHow to think like a threat actor for Kubernetes.pptx
How to think like a threat actor for Kubernetes.pptx
LibbySchulze15 views
IETF 118: Starlink Protocol Performance by APNIC
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol Performance
APNIC354 views
Marketing and Community Building in Web3 by Federico Ast
Marketing and Community Building in Web3Marketing and Community Building in Web3
Marketing and Community Building in Web3
Federico Ast12 views
Building trust in our information ecosystem: who do we trust in an emergency by Tina Purnat
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergency
Tina Purnat106 views

Développer sous Sylius en 40 minutes chrono