🚀 De zéro à héros avec Sylius : Au cœur de l'atelier sur les essentiels pratiques
Si vous êtes nouveau à Sylius ou cherche à solidifier vos fondations, Gracjan Józefczyk, développeur bitbag et contributeur clé de Sylius. C'était un atelier à Sylius Days 2025 était une masterclass en architecture de commerce électronique. 💡
Maîtrice Sylius Fundamentals: de la configuration des ressources aux grilles
Dans un atelier pratique de Sylius dirigé par le contributeur clé et créateur de l'Académie Sylius Grazian, les développeurs de Symfony expérimentés ont exploré le fondement de Sylius par le codage en direct, les idées architecturales et les stratégies de mise en œuvre du monde réel. Ce post distille les connaissances techniques de base de la session - a évoqué la compréhension de la double identité de Sylius en tant que plate-forme et cadre, la puissance de la ressourcebundle et de la grille et des approches de personnalisation efficaces.
Contexte de problème:
Sylius est une solution de commerce électronique basée sur Symfony qui vise à être à la fois adaptée aux développeurs et à l'entreprise. Cependant, le démarrage ou le prolonger (par exemple, la création de ressources personnalisées ou d'interfaces) semble souvent intimidante en raison de son architecture et de sa dépendance d'opinion sur ses propres paquets. Les développeurs entrant dans un projet Sylius doivent d'abord comprendre comment les entités, les services et les configurations de base interviennent pour éviter la friction plus tard.
Brallage de la solution:
-
Comprendre Sylius comme cadre et plate-forme
Sylius fournit un frontage de boutique basé sur bootstrap, un panneau d'administration et une API complète hors de la boîte. Il combine la flexibilité d'un cadre Symfony avec les capacités de plug-and-play d'une plate-forme de commerce électronique.
Panneau d'administration: utilise des pare-feu Symfony Security pour faire la distinction entre l'administrateur et les connexions des clients.
API: Construit avec la plate-forme API. Les points de terminaison sont exposés à la fois pour la boutique et l'administrateur, avec une séparation claire via / shop et / admin préfixes.
-
Configuration des ressources avec ResourceBundle
Le SyliusResourceBundle résume les opérations de crud communes en tirant parti des déclarations d'entités basées sur la configuration. Pour définir une nouvelle ressource:
Sylius_Resource: ressources: app.brand: Conducteur: doctrine / orm Cours: Modèle: App \ Entity \ Brand
Ce bloc unique permet:
-
Instanciation du contrôleur (via ResourceController)
-
Formtype et référentiel en usine
-
Service Autoconfiguration et routage
Bonus: utilisez le débogage: Sylius: ressource pour inspecter les liaisons des ressources.
-
Exposition des routes avec la configuration de routage Symfony
Une fois déclaré, les itinéraires de ressources sont exposés via:
sylius_admin_brand: Ressource: "Sylius.resource" Type: Sylius.Resource Section: Admin Alias: app.brand Modèles: Syliusadminbundle: Crud Redirection: mise à jour grille: sylius_admin_brand
-
Listing de données avec Gridbundle
SyliusgridBundle permet des grilles d'administration pour la visualisation et l'interaction des données (filtres, actions, opérations en vrac).
Sylius_Grid: Grides: sylius_admin_brand: conducteur: Nom: Doctrine / Orm Options: Classe: App \ Entity \ Brand champs: nom: Type: chaîne Étiquette: sylius.ui.name Filtres: nom: Type: chaîne
Les grilles s'intègrent parfaitement à ResourceBundle. Ils soutiennent:
-
Filtres de colonne
-
Actions en ligne et en vrac
-
rendu frontal facile via des modèles basés sur bootstrap
Extensibilité et pratiques communautaires
Des cas d'utilisation avancés présentés lors de l'atelier:
-
Migration de Sylius 1.14 à Sylius 2 (changements majeurs dans le rendu de la grille, internes de ressources))
-
Utilisation de nouvelles déclarations de ressources basées sur des attributs PHP (# [asresource]) pour supprimer la verbosité YAML
-
Remplacer Winzou State Machine par Symfony Workflow pour les transitions de commande
-
Stratégies d'intégration pour CMS, PIM ou Backends de recherche (Elasticsearch)
Une force clé de Sylius est sa communauté active, le maintien des plugins open source (bande, interface utilisateur d'administration, etc.) et contribuant à GitHub et à Slack Support.
Résultat / Impact: Les participants sont partis avec une configuration de Sylius prête pour la production, un environnement Docker configuré et des connaissances pratiques à:
Étendre Sylius avec des entités personnalisées:
-
Utiliser la configuration déclarative pour un crud rapide
-
Personnaliser les grilles d'administration
-
Migrer vers les versions Sylius plus récentes
-
Cette approche stimule la maintenabilité, l'intégration des développeurs et accélère les cycles de développement initiaux.
Les principaux plats à retenir:
-
SyliusResourceBundle élimine le chaudron pour crud.
-
SyliusgridBundle fournit des listes d'administration de qualité de production avec une configuration minimale.
-
L'intégration de Symfony est de première classe, permettant un DX lisse.
-
Les contributions et les pratiques communautaires sont essentielles pour l'échelle de Sylius.
-
Utilisez des attributs YAML ou PHP en fonction de l'échelle de votre projet et des conventions d'équipe.
Al
Au cours de l'atelier avancé de Sylius, les développeurs ont plongé profondément dans deux aspects critiques de la personnalisation du commerce électronique au niveau de l'entreprise: Adapter la logique métier via l'entité, le formulaire et le modèleRemplacez et Bâtiment des plugins modulaires et réutilisables qui restent maintenables et compatibles entre les versions Sylius.
🧩 Le défi
Les implémentations modernes du commerce électronique nécessitent souvent une logique sur mesure (par exemple, les configurateurs de produits, les données spécifiques aux fournisseurs, les promotions en couches). La configuration par défaut de Sylius est flexible, mais pas toujours une clé en main pour ces besoins avancés.
Les objectifs clés du développeur comprennent:
-
Extension des entités sans casser des mappages de succession ou de doctrine.
-
Injection de nouveaux champs sous forme de symfony.
-
Modèles primordiaux d'une manière à impterner à l'avenir.
-
Développer des plugins réutilisables avec des environnements de test et une compatibilité des versions.
🛠️ Implémentation technique
Extension des entités et des formulaires
Exemple: ajout d'une relation de «marque» avec le «produit»
// src / entité / produit.php Le produit de classe étend Baseproduct { #[Orm \ ManyToOne (ciblentity: Brand :: Class)]] privé? Brand $ Brand = null; Fonction publique getBrand () :? marque {return $ this-> marque; } Fonction publique setBrand (? Brand $ Brand): void {$ this-> marque = $ marque; } }
Injecter le champ dans le formulaire d'administration à l'aide d'une extension de type de formulaire:
// SRC / Form / Extension / ProductTypeExtension.php Class ProductTypeExtension étend AbstractTypeExtension { Fonction publique Buildform (FormBuilderInterface $ Builder, Array $ Options): void { $ builder-> Add ('Brand', EntityType :: Class, [ 'Class' => Brand :: Class, 'choix_label' => 'name', 'requis' => false, ])); } Fonction statique publique GetExtendTypes (): itérable { return [ProductType :: class]; } }
Les remplacements du modèle avec des crochets de brindilles
Au lieu de copier des modèles entiers, vous pouvez injecter une logique personnalisée en utilisant des crochets Twig, introduits dans Sylius 1.11+.
{ % hook 'sylius.admin.product.form.tab'%} { {render (contrôleur ('app \\ contrôleur \\ brandController :: index'))} } { % endhook% }
Vous pouvez inspecter les noms de crochets et l'utilisation via le profil Symfony. Chaque crochet accepte:
-
Une priorité (pour commande)
-
Paramètres (passés au modèle)
-
Zones de crochet pré / post facultatif
Bâtiment des plugins robustes
Squelette de plugin
Les plugins Sylius suivent une structure de bundle Symfony:
src / Myplugin / Contrôleur/ Entité/ Dépôt/ DépendanceInjection / Myplugin.php
Ils enregistrent la configuration, les itinéraires et les services via des manifestes dédiés. Les cas d'utilisation courants comprennent:
-
Intégrations de paiement (Stripe, Mollie, Paypal)
-
Caractéristiques SEO (sitemaps, données structurées)
-
Fonctionnalité d'importation / exportation
-
Promotions personnalisées, attributs ou logiques de paiement
Application de test partagée (nouvelle approche)
Historiquement, chaque plugin a dû expédier avec une application complète de test Sylius - créant des cauchemars de maintenance sur plusieurs versions.
Maintenant, la communauté fournit un package d'applications de test:
compositeur exige --Dev Sylius / Plugin-Test-Application
Cela permet des tests de matrice CI par version avec un correctif de configuration automatique basé sur les versions Sylius / Symfony.
Sylius: Version: ["1.11", "1.12", "1.13", "1.14", "2.0"] Symfony: ["5.4", "6.4"]
Plus de piratage kernel.php - cela rend le plugin de développement plus rapide et beaucoup plus maintenable.
📈 Résultat et avantages
-
Extensibilité **: Les besoins spécifiques aux entreprises sont encapsulés proprement avec un couplage zéro au noyau de Sylius.
-
Testabilité **: Les plugins s'exécutent isolés avec des applications CI complètes et de test.
-
Compatibilité **: prend en charge facilement plusieurs versions Sylius / Symfony.
-
Expection du développeur (DX) **: Des outils comme les crochets brindilles et Sylius: Make: Resource accélèrent considérablement l'implémentation.
✅ Takeways clés pour les développeurs
✅ Utilisez l'héritage de la doctrine et «FormtypeExtension» pour étendre les entités et les formulaires proprement.
✅ Levier Crochets à brindilles pour injecter la logique de l'interface utilisateur sans remplacer les modèles complets.
✅ Structurez vos plugins comme les paquets Symfony et suivez les meilleures pratiques (référentiels non finaux, services isolés).
✅ Utilisez le nouvel outil d'application de test pour rendre vos plugins compatibles avec plusieurs versions de Sylius et Symfony.
✅ Extraire la logique réutilisable dans les plugins (paiement, import / export, elasticsearch, WishLists…) pour évoluer entre les projets.
✅ Pourquoi cela compte
Cet atelier n'était pas seulement théorique - il a été construit pour l'action. Si vous construisez des solutions de commerce électronique évolutives, personnalisables et adaptées aux développeurs, la maîtrise de Sylius est une évidence. Et les conseils de Gracjan ont rendu ce voyage 10x plus rapidement. ⚡
Syliuscon 2025
Syliuscon 2024 a été un moment charnière pour la communauté de Sylius, et l'excitation se construit déjà pour [SyliusCon 2025] (https://sylius.com/conference-2025), promettant des informations encore plus profondes, des vitrines techniques et une innovation conduite par la communauté dans le paysage électronique évolutif.
Ressources
Composants de Sylius
-
RessourceBundle: https://github.com/sylius/syliusresourcebundle
-
Gridbundle: https://github.com/sylius/syliusgridbundle
-
SyliusRecipes: https://github.com/sylius/syliusrecipes
-
Syliusstandard: https://github.com/sylius/sylius-standard
-
Syliusdemo: https://github.com/sylius/syliusdemo
Plugins
-
Plugin Stripe: https://github.com/flux-se/syliuspayumstripeplugin
-
SyLiusELasticSearchPlugin: https://github.com/bitbagcommerce/SyLiusELasticSearchPlugin
-
Plugin SEO
-
Importer l'exportation (ami de Sylius) https://github.com/friendsofsylius/SyliusImPortExportPlugin
-
Whishlist
-
Plugin RGPD (Synolia)
-
Carte-cadeau
-
factures
💡 Bonus pour les créateurs et les constructeurs
Vous voulez automatiser vos propres processus comme la création de vignettes, la publication vidéo ou la gestion du flux de travail?
👉 J'offre des séances de coaching gratuites de 30 minutes pour aider les créateurs comme vous déplacer plus rapidement. Simplifions votre pile, ensemble.
🎮 Créer un mini-jeu Discord avec VITE : un retour d'expérience

🎶 Open Mic du Groover Club - Mai 🧡

▶️ 2025-05-26 DjMatyo Soundcloud set with MC

🚀 Du développement à la production : déployer une API Symfony avec Upsun

🚀 Sylius Days 2025 : l'innovation en matière de commerce électronique

🇪🇺 DJ Matyo Live special Eurovision 2025 🌟

Générez automatiquement des miniatures YouTube personnalisées de style Ghibli avec PHP et l'IA

Recherche, Achat et Organisation de Tracks pour DJ Sets

Automating Gmail and Google Calendar with PHP Agents ?🧠⚡

Supercharge Your Job Search: Automate with MCP, Astra, Langflow and Arize

DJ Matyo Live

Build a Game for the largest game dev competition in the world

Demande à Codex

DJ Matyo Live repost track

Darkwood v1.0.1 release

Transforme ta voix en article de blog avec GPT et Meteor

Darkwood 1.0.0 is Here

Coder comme un DJ, mixer comme un dev

Créer un interpréteur Lambda en PHP

Youtube timestamp looker
