Sylius v0.15.0 with multiple channels
Hello there Sylius community! Summer is slowly coming to an end and we got back to work.
Last month at Sylius has been really busy and we are much more active on GitHub. All new issues get proper replies and are categorized using labels. We are slowly going through some of the old tickets as well.
The new release is over 570 commits from almost 40 contributors. There are several big new features and improvements worth mentioning:
We have added the initial version of multi-store functionality. Sylius now allows you to sell goods through different channels from the same installation. These can be web shops, point of sales, mobile applications and pretty much anything that can consume the API.
Every channel can have its own:
- Shipping and Payment Methods
With the coming Theming support, every channel, which uses a web frontend, will also be able to have its own look and feel.
If you are running a v0.14.0, our database migration scripts will migrate all your orders to new multi-channel structure.
One important thing to note is that users are currently shared across all channels. We are still evaluating whether we want to make them channel-specific and how to do it.
Please keep in mind: this is very initial version of this feature and will be iterated on in the upcoming releases.
Dropping FOSUserBundle for Customer/User separation
This is a big change and can be a bit controversial because we have removed the most popular Symfony bundle. Yes, we have replaced FOSUserBundle with our very own SyliusUserBundle. Before you flip the table, please check my reasoning:
Sylius is built around strong conventions, which means that for all data models have the same structure of services, naming of events, classes and generally things work in the same way for everything, except User model from FOSUserBundle. We want Sylius to be consistent and User entity is one of the most important ones. You interact with it everywhere in the system.
Separation of User and Customer
We wanted to have user account separated from customer instance. Continue reading to understand what does it mean.
We have separated the User and Customer entity. Simple comparision should explain why we did that and how does it work:
- Customer contains all personal information (e-mail, firstname, lastname, gender, preferences etc.);
- User entity holds the credentials and everything related to the user account;
- Every User is related to a Customer, but not every Customer has a User account;
- Customer is created when someone sends a contact request, sign ups for a newsletter or places an order as a guest;
- You can also create Customers in the backend;
- User is created transparently for a Customer, when he want to setup an account in the store.
This gives us a lot more flexibility and allows us to track much more information about our customer, as soon as he interacts with the website.
Payment fees and many bug fixes
One other cool feature we have added are payment fee calculators. You can now apply a certain fee to user’s cart total, depending on which payment method they selected. Of course, as with everything in Sylius, you can easily add your own calculators for different pricing logic. Defaults include fixed and percentage fees.
We have spent last month on intensive bug fixing. There is still a lot of work ahead of us, but Sylius should be generally a bit more stable and have less annoying bugs.
Things coming in v0.16.x and future versions
Next release is going to be an exciting moment for Sylius, it will contain something that I have been working on for past months - SyliusResourceBundle refactoring. It will maintain all existing functionality and contain some new stuff as well, but most importantly it will handle things in a much cleaner way, which eliminates a lot of bugs and nasty workarounds. More on that in a separate blog post coming soon.
Most important change in v0.16.x development branch will be the minimum PHP requirement bump. v0.15.0 will be the last version compatible with 5.3. Sylius will now require at least PHP 5.5.9. I do not think there is anything to explain here. We are also planning the upgrade to Symfony 2.7.
Some of the features coming in v0.16.0, v0.17.0 and v0.18.0:
- Advanced SEO metadata management
- Product reviews
- Product associations
- Better attribute handling
- SymfonyCMFMedia for handling all product media
- Theming support (theme inheritance)
- Grids & improved backend interface (materializecss)
All this stuff has PR waiting for final polish and review!
You can install and try the latest Sylius by running the following commands:
$ composer create-project -s dev sylius/sylius:0.15.0 $ cd sylius $ app/console sylius:install
To start a new project on top of Sylius, use Standard Edition:
$ composer create-project -s dev sylius/sylius-standard:0.15.0 acme $ cd acme $ app/console sylius:install
That's it, new Sylius installer will guide you through the process.
Make sure that Sylius can write to
Sylius packages have just passed 1,200,000 downloads and 220 contibutors. Thank you for that! There is still crazy amount of work ahead of us, but with your help everything is possible. Check out our Contributing Guide and join our community!