🚀 From Zero to Hero with Sylius: Inside the Practical Essentials Workshop
le 24 mai 2025
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.
Mise en place 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:
resources:
app.brand:
driver: doctrine/orm
classes:
model: 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:
resource: "sylius.resource"
type: sylius.resource
section: admin
alias: app.brand
templates: SyliusAdminBundle:Crud
redirect: update
grid: 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:
grids:
sylius_admin_brand:
driver:
name: doctrine/orm
options:
class: App\Entity\Brand
fields:
name:
type: string
label: sylius.ui.name
filters:
name:
type: string
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 fait gagner du temps 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.
Customisations
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 Structures 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/Entity/Product.php
class Product extends BaseProduct
{
#[ORM\ManyToOne(targetEntity: Brand::class)]
private ?Brand $brand = null;
public function getBrand(): ?Brand { return $this->brand; }
public function setBrand(?Brand $brand): void { $this->brand = $brand; }
}
Injecter le champ dans le formulaire d'administration à l'aide d'une extension de type de formulaire:
// src/Form/Extension/ProductTypeExtension.php
class ProductTypeExtension extends AbstractTypeExtension
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('brand', EntityType::class, [
'class' => Brand::class,
'choice_label' => 'name',
'required' => false,
]);
}
public static function getExtendedTypes(): iterable
{
return [ProductType::class];
}
}
Les remplacements du modèle avec des hooks
Au lieu de copier des modèles entiers, vous pouvez injecter une logique personnalisée en utilisant hooks, 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
Structure des plugins robustes
Squelette de plugin
Les plugins Sylius suivent une structure de bundle Symfony:
src/
MyPlugin/
Controller/
Entity/
Repository/
DependencyInjection/
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:
composer require --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 hooks 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, 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
- Crows Twig: https://afup.org/talks/4929-creer-des-interfaces-d-admiminging-papider-avec-symfony-UX-ET-SYLIUS
- 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. 📞 Réservez votre session gratuite ici