Everyone has the opportunity to be a pioneer.
Everyone has the opportunity to be a pioneer.
Tech Talk
Een Sylius-plugin maken: Een ontwikkelaarsgids
Een Sylius-plugin maken: Een ontwikkelaarsgids
Egbert Wietses
06
.
10
.
2024
4 min lezen



Het ontwikkelen van een plugin voor Sylius kan een lonend proces zijn, waarmee ontwikkelaars de functionaliteit van dit krachtige e-commerceplatform kunnen uitbreiden. Deze uitgebreide gids neemt je mee door de stappen van het maken van een Sylius-plugin, van de eerste opzet tot de implementatie, waarbij essentiële aspecten zoals pluginarchitectuur, configuratie en testen aan bod komen.
Begrijpen van de Plugin Architectuur
Sylius is gebouwd op het Symfony-framework, wat betekent dat zijn plugins de bundelarchitectuur van Symfony volgen. Een Sylius-plugin is in wezen een Symfony-bundel met aanvullende conventies die specifiek zijn voor Sylius. Het begrijpen van deze architectuur is cruciaal voor het ontwikkelen van robuuste plugins.
1. Pluginstructuur: Een typische Sylius-plugin bevat verschillende kerncomponenten, waaronder:
Entiteit: Vertegenwoordigt het datamodel.
Repository: Beheert databasebewerkingen voor de entiteit.
Dienst: Bevat de bedrijfslogica.
Controller: Behandelt HTTP-verzoeken en -antwoorden.
Formulier: Beheert de creatie en validatie van formulieren.
Twig-sjablonen: Bepaalt de gebruikersinterface.
2. Afhankelijkheidsinjectie: Sylius steunt sterk op het afhankelijkheidsinjectiecomponent van Symfony, waardoor diensten automatisch kunnen worden geïnjecteerd waar nodig. Dit faciliteert de ontkoppeling van componenten en bevordert modulariteit.
Sylius is gebouwd op het Symfony-framework, wat betekent dat zijn plugins de bundelarchitectuur van Symfony volgen. Een Sylius-plugin is in wezen een Symfony-bundel met aanvullende conventies die specifiek zijn voor Sylius. Het begrijpen van deze architectuur is cruciaal voor het ontwikkelen van robuuste plugins.
1. Pluginstructuur: Een typische Sylius-plugin bevat verschillende kerncomponenten, waaronder:
Entiteit: Vertegenwoordigt het datamodel.
Repository: Beheert databasebewerkingen voor de entiteit.
Dienst: Bevat de bedrijfslogica.
Controller: Behandelt HTTP-verzoeken en -antwoorden.
Formulier: Beheert de creatie en validatie van formulieren.
Twig-sjablonen: Bepaalt de gebruikersinterface.
2. Afhankelijkheidsinjectie: Sylius steunt sterk op het afhankelijkheidsinjectiecomponent van Symfony, waardoor diensten automatisch kunnen worden geïnjecteerd waar nodig. Dit faciliteert de ontkoppeling van componenten en bevordert modulariteit.
Sylius is gebouwd op het Symfony-framework, wat betekent dat zijn plugins de bundelarchitectuur van Symfony volgen. Een Sylius-plugin is in wezen een Symfony-bundel met aanvullende conventies die specifiek zijn voor Sylius. Het begrijpen van deze architectuur is cruciaal voor het ontwikkelen van robuuste plugins.
1. Pluginstructuur: Een typische Sylius-plugin bevat verschillende kerncomponenten, waaronder:
Entiteit: Vertegenwoordigt het datamodel.
Repository: Beheert databasebewerkingen voor de entiteit.
Dienst: Bevat de bedrijfslogica.
Controller: Behandelt HTTP-verzoeken en -antwoorden.
Formulier: Beheert de creatie en validatie van formulieren.
Twig-sjablonen: Bepaalt de gebruikersinterface.
2. Afhankelijkheidsinjectie: Sylius steunt sterk op het afhankelijkheidsinjectiecomponent van Symfony, waardoor diensten automatisch kunnen worden geïnjecteerd waar nodig. Dit faciliteert de ontkoppeling van componenten en bevordert modulariteit.
De ontwikkelomgeving instellen
Voordat je begint met het maken van een plug-in, zorg ervoor dat je een Sylius-project hebt opgezet. Je kunt een nieuw Sylius-project maken met Composer:
bash composer create-project sylius/sylius-standard my-sylius-project
Navigeer naar de projectdirectory en installeer de nodige afhankelijkheden:
bash cd my-sylius-project composer install
Voordat je begint met het maken van een plug-in, zorg ervoor dat je een Sylius-project hebt opgezet. Je kunt een nieuw Sylius-project maken met Composer:
bash composer create-project sylius/sylius-standard my-sylius-project
Navigeer naar de projectdirectory en installeer de nodige afhankelijkheden:
bash cd my-sylius-project composer install
Voordat je begint met het maken van een plug-in, zorg ervoor dat je een Sylius-project hebt opgezet. Je kunt een nieuw Sylius-project maken met Composer:
bash composer create-project sylius/sylius-standard my-sylius-project
Navigeer naar de projectdirectory en installeer de nodige afhankelijkheden:
bash cd my-sylius-project composer install
Het Maken van de Plugin Skeleton
Je kunt de Sylius Plugin Skeleton gebruiken om je pluginontwikkeling te starten. Clone de skeleton repository en stel je plugin in:
bash composer create-project sylius/plugin-skeleton my-sylius-plugin
Navigeer naar de plugin directory en pas het composer.json bestand aan om de informatie van je plugin weer te geven. Werk de naam, beschrijving en autoload secties bij.
Je kunt de Sylius Plugin Skeleton gebruiken om je pluginontwikkeling te starten. Clone de skeleton repository en stel je plugin in:
bash composer create-project sylius/plugin-skeleton my-sylius-plugin
Navigeer naar de plugin directory en pas het composer.json bestand aan om de informatie van je plugin weer te geven. Werk de naam, beschrijving en autoload secties bij.
Je kunt de Sylius Plugin Skeleton gebruiken om je pluginontwikkeling te starten. Clone de skeleton repository en stel je plugin in:
bash composer create-project sylius/plugin-skeleton my-sylius-plugin
Navigeer naar de plugin directory en pas het composer.json bestand aan om de informatie van je plugin weer te geven. Werk de naam, beschrijving en autoload secties bij.
Definiëren van het Gegevensmodel
Het datamodel van uw plugin is gedefinieerd met behulp van Doctrine-entiteiten. Maak een nieuwe entiteitsklasse aan in de Entity-map:
php namespace My\SyliusPlugin\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="my_plugin_entity") / class MyEntity { /* * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; // Other fields and their annotations }
Het datamodel van uw plugin is gedefinieerd met behulp van Doctrine-entiteiten. Maak een nieuwe entiteitsklasse aan in de Entity-map:
php namespace My\SyliusPlugin\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="my_plugin_entity") / class MyEntity { /* * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; // Other fields and their annotations }
Het datamodel van uw plugin is gedefinieerd met behulp van Doctrine-entiteiten. Maak een nieuwe entiteitsklasse aan in de Entity-map:
php namespace My\SyliusPlugin\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="my_plugin_entity") / class MyEntity { /* * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; // Other fields and their annotations }
Een Repository Aanmaken
De repository beheert de data-accesslogica. Maak een repositoryklasse in de Repository-structuur:
php namespace My\SyliusPlugin\Repository; use Doctrine\ORM\EntityRepository; class MyEntityRepository extends EntityRepository { // Custom repository methods }
De repository beheert de data-accesslogica. Maak een repositoryklasse in de Repository-structuur:
php namespace My\SyliusPlugin\Repository; use Doctrine\ORM\EntityRepository; class MyEntityRepository extends EntityRepository { // Custom repository methods }
De repository beheert de data-accesslogica. Maak een repositoryklasse in de Repository-structuur:
php namespace My\SyliusPlugin\Repository; use Doctrine\ORM\EntityRepository; class MyEntityRepository extends EntityRepository { // Custom repository methods }
Diensten Definiëren
Diensten bevatten de bedrijfslogica van uw plugin. Definieer uw diensten in het services.yaml-bestand en maak de bijbehorende serviceklasse aan:
yaml services: my_sylius_plugin.service.my_service: class: My\SyliusPlugin\Service\MyService arguments: ['@doctrine.orm.entity_manager'] php namespace My\SyliusPlugin\Service; class MyService { private $entityManager; public function __construct(EntityManagerInterface $entityManager) { $this->entityManager = $entityManager; } // Service methods }
Diensten bevatten de bedrijfslogica van uw plugin. Definieer uw diensten in het services.yaml-bestand en maak de bijbehorende serviceklasse aan:
yaml services: my_sylius_plugin.service.my_service: class: My\SyliusPlugin\Service\MyService arguments: ['@doctrine.orm.entity_manager'] php namespace My\SyliusPlugin\Service; class MyService { private $entityManager; public function __construct(EntityManagerInterface $entityManager) { $this->entityManager = $entityManager; } // Service methods }
Diensten bevatten de bedrijfslogica van uw plugin. Definieer uw diensten in het services.yaml-bestand en maak de bijbehorende serviceklasse aan:
yaml services: my_sylius_plugin.service.my_service: class: My\SyliusPlugin\Service\MyService arguments: ['@doctrine.orm.entity_manager'] php namespace My\SyliusPlugin\Service; class MyService { private $entityManager; public function __construct(EntityManagerInterface $entityManager) { $this->entityManager = $entityManager; } // Service methods }
Controllers Maken
Controllers verwerken HTTP-verzoeken en -antwoorden. Maak een controllerklasse aan in de Controller-directory:
php namespace My\SyliusPlugin\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class MyController extends AbstractController { public function indexAction(): Response { // Handle the request and return a response } }
Controllers verwerken HTTP-verzoeken en -antwoorden. Maak een controllerklasse aan in de Controller-directory:
php namespace My\SyliusPlugin\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class MyController extends AbstractController { public function indexAction(): Response { // Handle the request and return a response } }
Controllers verwerken HTTP-verzoeken en -antwoorden. Maak een controllerklasse aan in de Controller-directory:
php namespace My\SyliusPlugin\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class MyController extends AbstractController { public function indexAction(): Response { // Handle the request and return a response } }
Formulieren en Sjablonen Maken
Formulieren beheren gebruikersinvoer en validatie. Maak een formuliervorm klasse in de Form directory: php namespace
My\SyliusPlugin\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; class MyFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('name', TextType::class); // Other form fields } }
Maak Twig-sjablonen in de sjablonen directory om de gebruikersinterface te definiëren. Deze sjablonen worden door uw controllers gebruikt om weergaven te renderen.
Formulieren beheren gebruikersinvoer en validatie. Maak een formuliervorm klasse in de Form directory: php namespace
My\SyliusPlugin\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; class MyFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('name', TextType::class); // Other form fields } }
Maak Twig-sjablonen in de sjablonen directory om de gebruikersinterface te definiëren. Deze sjablonen worden door uw controllers gebruikt om weergaven te renderen.
Formulieren beheren gebruikersinvoer en validatie. Maak een formuliervorm klasse in de Form directory: php namespace
My\SyliusPlugin\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; class MyFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('name', TextType::class); // Other form fields } }
Maak Twig-sjablonen in de sjablonen directory om de gebruikersinterface te definiëren. Deze sjablonen worden door uw controllers gebruikt om weergaven te renderen.
De Plugin Configureren
Uw plugin moet worden geregistreerd in de Sylius-toepassing. Voeg de plugin toe aan het config/bundles.php bestand:
php return [ // Other bundles My\SyliusPlugin\MySyliusPlugin::class => ['all' => true], ]; Configure the plugin’s routes in the config/routes.yaml file: yaml my_sylius_plugin: resource:"@MySyliusPlugin/Resources/config/routing.yaml" prefix: /admin
Uw plugin moet worden geregistreerd in de Sylius-toepassing. Voeg de plugin toe aan het config/bundles.php bestand:
php return [ // Other bundles My\SyliusPlugin\MySyliusPlugin::class => ['all' => true], ]; Configure the plugin’s routes in the config/routes.yaml file: yaml my_sylius_plugin: resource:"@MySyliusPlugin/Resources/config/routing.yaml" prefix: /admin
Uw plugin moet worden geregistreerd in de Sylius-toepassing. Voeg de plugin toe aan het config/bundles.php bestand:
php return [ // Other bundles My\SyliusPlugin\MySyliusPlugin::class => ['all' => true], ]; Configure the plugin’s routes in the config/routes.yaml file: yaml my_sylius_plugin: resource:"@MySyliusPlugin/Resources/config/routing.yaml" prefix: /admin
De Plugin Testen
Testen is cruciaal om te zorgen dat je plugin werkt zoals verwacht. Sylius moedigt een testgedreven ontwikkelingsaanpak aan. Maak testgevallen voor je plugin met PHPUnit en Behat. Plaats unittests in de tests-directory en integratietests in de tests/Integration-directory.
Testen is cruciaal om te zorgen dat je plugin werkt zoals verwacht. Sylius moedigt een testgedreven ontwikkelingsaanpak aan. Maak testgevallen voor je plugin met PHPUnit en Behat. Plaats unittests in de tests-directory en integratietests in de tests/Integration-directory.
Testen is cruciaal om te zorgen dat je plugin werkt zoals verwacht. Sylius moedigt een testgedreven ontwikkelingsaanpak aan. Maak testgevallen voor je plugin met PHPUnit en Behat. Plaats unittests in de tests-directory en integratietests in de tests/Integration-directory.
De Plugin Implementeren
Eenmaal uw plugin is ontwikkeld en getest, is deze klaar voor implementatie. Zorg ervoor dat de code van uw plugin schoon en goed gedocumenteerd is. Tag een release in uw versiebeheersysteem en publiceer de plugin op een pakketrepository zoals Packagist. Dit maakt het toegankelijk voor installatie via Composer. Om de plugin in een Sylius-project te installeren, voert u uit:
bash composer require my/sylius-plugin
Tot slot, voer eventuele noodzakelijke database-migraties uit en werk de Sylius-cache bij:
bash bin/console doctrine:migrations:migrate bin/console cache:clear
Eenmaal uw plugin is ontwikkeld en getest, is deze klaar voor implementatie. Zorg ervoor dat de code van uw plugin schoon en goed gedocumenteerd is. Tag een release in uw versiebeheersysteem en publiceer de plugin op een pakketrepository zoals Packagist. Dit maakt het toegankelijk voor installatie via Composer. Om de plugin in een Sylius-project te installeren, voert u uit:
bash composer require my/sylius-plugin
Tot slot, voer eventuele noodzakelijke database-migraties uit en werk de Sylius-cache bij:
bash bin/console doctrine:migrations:migrate bin/console cache:clear
Eenmaal uw plugin is ontwikkeld en getest, is deze klaar voor implementatie. Zorg ervoor dat de code van uw plugin schoon en goed gedocumenteerd is. Tag een release in uw versiebeheersysteem en publiceer de plugin op een pakketrepository zoals Packagist. Dit maakt het toegankelijk voor installatie via Composer. Om de plugin in een Sylius-project te installeren, voert u uit:
bash composer require my/sylius-plugin
Tot slot, voer eventuele noodzakelijke database-migraties uit en werk de Sylius-cache bij:
bash bin/console doctrine:migrations:migrate bin/console cache:clear
Conclusie
Het maken van een Sylius-plugin omvat het begrijpen van de onderliggende architectuur, het opzetten van een ontwikkelomgeving, het definiëren van het datamodel, het creëren van repositories, services en controllers, het beheren van formulieren en sjablonen, het configureren van de plugin, testen en uiteindelijk het implementeren ervan. Door deze uitgebreide gids te volgen, kunnen ontwikkelaars de mogelijkheden van Sylius uitbreiden om aan specifieke zakelijke vereisten te voldoen, wat bijdraagt aan een flexibelere en krachtigere e-commerceplatform.
Het maken van een Sylius-plugin omvat het begrijpen van de onderliggende architectuur, het opzetten van een ontwikkelomgeving, het definiëren van het datamodel, het creëren van repositories, services en controllers, het beheren van formulieren en sjablonen, het configureren van de plugin, testen en uiteindelijk het implementeren ervan. Door deze uitgebreide gids te volgen, kunnen ontwikkelaars de mogelijkheden van Sylius uitbreiden om aan specifieke zakelijke vereisten te voldoen, wat bijdraagt aan een flexibelere en krachtigere e-commerceplatform.
Het maken van een Sylius-plugin omvat het begrijpen van de onderliggende architectuur, het opzetten van een ontwikkelomgeving, het definiëren van het datamodel, het creëren van repositories, services en controllers, het beheren van formulieren en sjablonen, het configureren van de plugin, testen en uiteindelijk het implementeren ervan. Door deze uitgebreide gids te volgen, kunnen ontwikkelaars de mogelijkheden van Sylius uitbreiden om aan specifieke zakelijke vereisten te voldoen, wat bijdraagt aan een flexibelere en krachtigere e-commerceplatform.
gerelateerde blogs
Lees Meer
Lees Meer
gerelateerde blogs
Lees Meer
Lees Meer
gerelateerde blogs
Lees Meer
Lees Meer
Begin het gesprek
Laten we het hebben over hoe maatwerksoftware uw grootste uitdagingen kan oplossen en groei kan stimuleren.
Begin het gesprek
Laten we het hebben over hoe maatwerksoftware uw grootste uitdagingen kan oplossen en groei kan stimuleren.
aanmelden voor de inzichten
Amsterdam
Rotterdam
Portland
© 2025 Pionect. Alle rechten voorbehouden.
Begin het gesprek
Laten we het hebben over hoe maatwerksoftware uw grootste uitdagingen kan oplossen en groei kan stimuleren.
Begin het gesprek
Laten we het hebben over hoe maatwerksoftware uw grootste uitdagingen kan oplossen en groei kan stimuleren.
aanmelden voor de inzichten
Amsterdam
Rotterdam
Portland
© 2025 Pionect. Alle rechten voorbehouden.
Begin het gesprek
Laten we het hebben over hoe maatwerksoftware uw grootste uitdagingen kan oplossen en groei kan stimuleren.
Begin het gesprek
Laten we het hebben over hoe maatwerksoftware uw grootste uitdagingen kan oplossen en groei kan stimuleren.
aanmelden voor de inzichten
Amsterdam
Rotterdam
Portland
© 2025 Pionect. Alle rechten voorbehouden.
Begin het gesprek
Laten we het hebben over hoe maatwerksoftware uw grootste uitdagingen kan oplossen en groei kan stimuleren.
Begin het gesprek
Laten we het hebben over hoe maatwerksoftware uw grootste uitdagingen kan oplossen en groei kan stimuleren.
aanmelden voor de inzichten
Amsterdam
Rotterdam
Portland
© 2025 Pionect. Alle rechten voorbehouden.





