How to create an extension for Sylius?

Sylius extension is nothing more but a regular Symfony bundle adding custom behaviour to the default Sylius application.

The best way to create your own extension is to use Sylius bundle skeleton, which has built-in infrastructure for designing and testing using Behat.

1. Create project using Composer.

$ composer create-project sylius/bundle-skeleton SyliusExtensionPath


The extension can be created anywhere, not only inside Sylius application, because it already has the test environment inside.

2. Get familiar with basic extension design.

The skeleton comes with simple application that greets a customer. There are feature scenarios in features directory; exemplary bundle with a controller, a template and a routing configuration in src; and the testing infrastructure in tests.


The tests/Application directory contains a sample Symfony application used to test your extension.

3. Remove boilerplate files and rename your bundle.

In most cases you don’t want your Sylius extension to greet customer like it is now, so feel free to remove unnecessary controllers, assets and features. You will also want to change the extension’s namespace from Acme\ExampleBundle to a more meaningful one. Keep in mind that these changes also need to be done in tests/Application and composer.json.

4. Implement your awesome features.

Looking at existing Sylius extensions like LakionSyliusCmsBundle or LakionSyliusElasticSearchBundle is a great way to start developing your own extensions.

Feel free to use BDD with Behat, phpspec and PhpUnit to ensure your extension’s extraordinary quality.


For the extensions, the suggested way of modifying Sylius is using the Customization Guide. There you will find a lot of help while trying to modify templates, state machines, controllers and many, many more.