Sylius con 2024
Notre expérience à la Sylius Con 2024
Sylius con 2024
Cette année la Sylius con 2024 se déroulait à Lyon, marquant la première édition française de cet événement.
Le lieu qui aura été retenu n’est autre que le Centre Congrès de Lyon, un lieu idéal pour accueillir un tel événement.
Keynote d’ouverture
L’annonce officielle de la version 2.0 a marqué la keynote d’ouverture. Félicitations à toute l’équipe !
Une remise de prix a également été organisée pour honorer les contributeurs de la communauté Sylius.
À cette occasion, Loïc Frémont (développeur chez AKAWAKA) a été récompensé pour son rôle de “key core contributor” dans la communauté Sylius.
Create World-Class Sylius Plugins - Joachim Løvgaard
Joachim nous présente des bonnes pratiques pour créer des plugins Sylius de qualité.
Définir vos dépendances
Il est recommandé de définir l’ensemble des dépendances de manière explicite dans votre fichier composer.json
. Cela permet de garantir la compatibilité de votre plugin avec les autres plugins et les versions de Sylius.
Un exemple est trouvable sur Github;
Adhérer à la version sémantique
Vous devez utiliser le système de versioning le plus courant dans cet écosystème : la version sémantique.
C’est un système de versioning à 3 chiffres : MAJOR.MINOR.PATCH Suivez le guide sur semver.org pour plus d’informations.
Préfixer la configuration des extensions
Au lieu de demander au développeur d’inclure des fichiers de configuration, en étendant l’injection de dépendances, il est possible de permettre aux développeurs d’étendre le plugin sans inclure de fichiers de configuration localisés dans les vendors.
Créer vos propres entités avec état et données
Au lieu de demander à l’utilisateur d’implémenter des interfaces, créer des entités dédiées permet d’améliorer la DX.
Par exemple, de nombreux plugin demandent de rajouter une interface sur la même classe, ce qui crée du bruit et de la confusion.
Utiliser des DTO et VO
Les DTO (Data Transfer Object) et VO (Value Object) permettent de mieux structurer les données et de les rendre plus facilement manipulables.
Typiquement vos classes doivent prendre et retourner un DTO dédié à votre plugin.
Utiliser des fournisseurs de données au lieu de référentiels
Utilisez des data providers plutôt que les repositories pour éviter des collisions inter-plugin et avec l’applicatif.
Faciliter l’intégration dans les flux
Pour faciliter l’intégration dans les flux, il est recommandé de publier des événements à des moments clefs (début, fin d’une action…).
Cela permet d’éviter de décorer des classes et retire ce point d’attention lors d’upgrade.
Utiliser des tests de mutation
Les tests de mutation sont une technique pour tester vos tests. Ils vont modifier votre code et voir si vos tests échouent. Si ce n’est pas le cas, cela signifie que vos tests ne testent pas la bonne chose.
Créer des tests fonctionnels et d’intégration
Un projet maintenable est un projet avec des tests, il est plus facile de le refactoriser et d’éviter les régressions.
Utiliser l’analyse statique (au niveau le plus ennuyeux)
Faites-le et vous trouverez plus de bugs / écrirez un code plus propre
Utiliser GitHub actions
GitHub actions est maintenant utilisé par la majorité de la communauté OSS et c’est gratuit. Les actions sont déjà fournies par les dépôts de squelettes de plugins.
Utiliser un squelette de plugin ou un générateur
Utilisez le squelette de plugin ou le générateur pour créer votre plugin, ils contiennent de facto toutes les meilleures pratiques. Setono a le squelette le plus populaire.
Sylius Beyond E-commerce: Building the Perfect WordPress Competitor - Jacques Bodin-Hullin
Jacques, de Monsieur Biz, dresse un constat impressionnant : WordPress est la base de 493 millions de sites, soit 44 % d’Internet. Il offre 30 000 thèmes et 70 000 plugins, tandis que WooCommerce gère 35 % des sites e-commerce. Jacques présente Sylius comme une solution capable de rivaliser avec WordPress, étendant ses fonctionnalités au-delà du simple e-commerce.
Il présente SyliusRichEditorPlugin, un éditeur de page fonctionnant en grille de lignes et colonnes, permettant d’ajouter des blocs de contenu appelés “UiElements”. Chaque UiElement est composé d’un formType pour sa configuration, de deux templates (un pour l’apparence backend et l’autre pour le front-end), et d’une classe pour ajouter du comportement spécifique, comme la récupération de données. La prochaine étape envisagée est d’intégrer des composants live pour permettre des mises à jour dynamiques.
Ensuite, il parle du fine tuning avec le plugin SettingsPlugin, qui permet, par exemple, de configurer Doofinder via une interface dédiée. Il présente aussi CMSBlockPlugin pour créer des blocs réutilisables, CMSPagePlugin pour les pages personnalisées et les pages d’accueil, ainsi que MenuPlugin pour gérer les menus. Le plugin Media Manager facilite la sélection de médias, tandis que le BlogPlugin gère les fonctionnalités de blog.
Pour installer l’écosystème complet, Jacques aborde Monofony, une solution permettant de retirer la partie e-commerce de Sylius. Il présente aussi NoCommercePlugin, un plugin qui désactive de manière précise les composants e-commerce de Sylius.
En conclusion avec tous ces outils, on peut obtenir une solution proche de WordPress, tout en gardant une maîtrise totale du code et de la personnalisation.
When Sylius Meets Beer: A Refresh That’s Brewing Up a Storm par Blandine et Julien Jacottet
Blandine, cheffe de projet et Julien, CTO de Mezcalito en charge du projet, nous présentent la refonte d’une Petite Mousse, une entreprise basée à Grenoble qui propose des box de bières et de fromages. Avec 150 000 colis envoyés par an (5 000 box par mois), la demande est très saisonnière, notamment à Noël. Leur site, vieillissant depuis 2013, présentait plusieurs défis : moderniser l’interface utilisateur (mobile-first, checkout optimisé), améliorer la gestion des abonnements, et assurer l’autonomie de l’équipe marketing dans l’administration.
Ils ont choisi Sylius, notamment en raison de son framework Symfony qui permet de développer des cas spécifiques. Le projet comprenait la création d’une solution multi-boutique : Une Petite Mousse pour les box de bières et un second site pour le fromage, les deux ayant des parcours clients similaires. La refonte s’est déroulée en deux temps : la première partie (box et abonnements) en avril 2023, puis la boutique Shopify rapatriée en septembre 2023.
Julien présente un parcours client rénové : la possibilité de personnaliser la box (durée d’abonnement, composition, date de démarrage, mode de livraison), des options spécifiques pour les cadeaux, ainsi qu’un tunnel d’achat simplifié incluant la personnalisation du message et la date d’envoi. Le système est maintenant plus flexible pour l’équipe marketing, leur permettant de créer des offres en masse, de gérer la configuration de nouveaux produits, et d’améliorer le référencement SEO.
Côté client, le retour est positif avec une meilleure autonomie de l’équipe marketing, une gestion simplifiée du support, et une amélioration du SEO (hausse du trafic organique et du référencement des pages de vente). De plus, ils ont élargi leur profil client grâce à la vente de cadeaux et de produits à l’unité, ainsi qu’à une expansion vers la vente B2B. Enfin, côté agence (Mezcalito), la migration en deux temps a été réalisée avec succès, en utilisant les plugins Sylius pour la configuration des produits. La boutique de fromage a été intégrée rapidement et efficacement dans l’écosystème Sylius.
🇫🇷 Ecommerce replatforming strategy and challenges - Hélèna Gravelier & Hugo Roche
L’agence Bongénie a repensé son e-commerce avec une nouvelle plateforme pour offrir une expérience client optimale. Ce projet ambitieux s’inscrit dans une stratégie omnicanale visant à fluidifier le parcours client et à mieux intégrer le online et le offline. Elle s’axe autour de l’utilisation de Sylius pour ce projet.
Les principaux défis :
- S’adapter à l’évolution du marché du luxe et aux nouvelles attentes des clients.
- Améliorer l’expérience utilisateur sur mobile.
- Intégrer de nombreuses fonctionnalités (personnalisation des prix, programme de fidélité, FAQ contextuelle…).
- Gérer un catalogue complexe avec 400 marques.
- Assurer une transition en douceur pour les clients et les équipes internes.
Les clés de la réussite :
- Une organisation agile et une collaboration étroite entre les équipes Bongénie et l’intégrateur.
- L’implication des métiers dès la phase de cadrage.
- Un accompagnement au changement pour les équipes et les clients.
- Le choix de Sylisu en headless permettant une grande flexibilité et des intégrations multiples.
Les premiers résultats :
- Une plateforme plus performante et une meilleure expérience utilisateur.
- Des workflows de travail optimisés.
- Un changement d’approche technologique majeur.
Sylius Payment Overview and Future - Francis Hilaire
Francis Hilaire présente les évolutions du système de paiement de Sylius, avec l’introduction de “Payment Request”. Ce nouveau mécanisme offre plus de flexibilité et permet de gérer les paiements de manière asynchrone.
Limites de Payum :
Payum, la librairie actuelle, est difficile à maîtriser et à déboguer. Elle ne permet pas de gérer les paiements asynchrones, ce qui est de plus en plus nécessaire avec l’essor des plateformes API.
Avantages de Payment Request :
- Permet de gérer les paiements de manière asynchrone, via des webhooks ou des messages.
- Offre plus de flexibilité pour l’intégration de nouvelles méthodes de paiement.
- Simplifie le développement des plugins de paiement.
- Permet d’utiliser Payum en API, sans interaction avec l’interface utilisateur.
Fonctionnement de Payment Request :
- Un nouveau système de “commandes” permet de gérer les actions de paiement (capture, autorisation, remboursement…).
- Les développeurs peuvent choisir d’utiliser Payum ou non pour chaque méthode de paiement.
- Des événements permettent de gérer les changements d’état des paiements et d’adapter le comportement du système.
Améliorations futures :
- Simplification du code et réduction de la duplication.
- Amélioration de la sécurité et de la gestion des erreurs.
- Documentation complète et exemples de plugins.
Payment Request est une évolution majeure pour Sylius, qui offre de nouvelles perspectives pour l’intégration des paiements et répond aux besoins des plateformes e-commerce modernes.
Boost Your Sylius Frontend with Hotwire, aka Symfony UX - Loïc Caillieux
Loïc Caillieux, de l’agence web Emagma, nous plonge dans l’univers de Hotwire, une suite d’outils front-end développée par Symfony UX, et explore son intégration avec Sylius pour créer des interfaces e-commerce dynamiques et performantes.
Hotwire propose une alternative aux frameworks JavaScript traditionnels en misant sur la simplicité et la performance.
Turbo Drive, Turbo Frames et Turbo Streams, les trois piliers de Hotwire, permettent respectivement de recharger partiellement les pages, de mettre à jour des sections spécifiques du contenu et de diffuser les mises à jour en temps réel.
L’intégration de Hotwire avec Sylius 2.0 se fait de manière transparente, bien que des ajustements puissent être nécessaires pour garantir une compatibilité optimale avec des librairies tierces comme Bootstrap (au sein de la refonte de Sylius 2.0).
Stimulus, le framework JavaScript léger de Hotwire, permet de créer des contrôleurs pour gérer les interactions spécifiques à Sylius, comme l’ajout de produits au panier ou la validation des formulaires. Grâce à Hotwire, l’expérience utilisateur est améliorée sur tous les aspects de la boutique en ligne, de la navigation au processus de commande.
Loïc nous montrera la puissance offerte par Hotwire et l’ensemble des composants de Symfony UX qui nous permettent d’éviter toute ligne de Javascript. Ou presque, puisque certains cas plus complexe nécessite d’écrire du code PHP et JS mais offre une boutique réellement dynamique.
Sa présentation étant concentré sur la partie boutique, il fera une petite introduction aux solutions back office que va présenter Loïc Frémont. Merci à lui !
Admin Panel (R)evolution for Your Symfony Projects - Loïc Frémont
La présentation étant la même que celle présentée lors du Forum PHP 2024, nous vous invitons à consulter ce lien afin d’en apprendre plus et regarder le replay bientôt disponible sur la chaîne youtube de l’AFUP.
Conclusion
Cette édition Lyonnaise fût l’occasion d’être nombreux à se rendre au sein d’AKAWAKA.
Les conférences étaient toutes aussi enrichissantes que les rencontres que nous avons pu faire.
Merci à l’équipe de Sylius pour l’organisation de cet événement !
Vous pouvez voir des photos de l’événement sur google photos.