Everyone has the opportunity to be a pioneer.

Everyone has the opportunity to be a pioneer.

neem contact met ons op

Tech Talk

Een Sylius-plugin maken: Een ontwikkelaarsgids

Egbert Wietses

06

.

10

.

2024

4 min lezen

een regel code
een regel code
een regel code

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

gerelateerde blogs

Lees Meer

gerelateerde blogs

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

KvK: 81812620

BTW: NL862228852B01

© 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

KvK: 81812620

BTW: NL862228852B01

© 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

KvK: 81812620

BTW: NL862228852B01

© 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

KvK: 81812620

BTW: NL123456789B01

© 2025 Pionect. Alle rechten voorbehouden.