THE PROBLEM PHP has changed This change created the market for a new e-commerce solution among developers With the flexibility of modern frameworks and the new way of collaboration we can build something interesting for the business Sylius reflects this evolution
WHAT IS SYLIUS A short history Open sourced in 2011 as a set of bundles Main application in development for ~9 months Already used in production by developers and companies
QUALITY Behat and phpspec, perfect combination Most of new features start with an RFC issue Discussion about the idea and eventual implementation Behat features Implementation
BUNDLES vs. MAIN APPLICATION Set of 19 decoupled and independent bundles Can be used to create a custom platform Integrate e-commerce into existing application Standard webshop experience Highly customizable Easy to understand for every Symfony2 developer
Simpler CRUD for symfony SyliusResourceBundle Removing tons of duplicated code in controllers for basic CRUD actions. Removing the manager and manipulator classes, relying on Doctrine instead. Removing the "frontend" and "backend" controllers. Supporting different persistence layers. Make the controllers format agnostic. (API)
USING CUSTOM MODELS and FORMS Every model class can be overridden All repositories, managers and forms are updated automatically Form class can be customized
YOUR OWN REPOSITORY Sylius repositories extend native Doctrine implementations Override the repositories through configuration Repositories are services
CHANGE THE RULES, VALIDATION All Sylius models ship with their own validation mapping under group „sylius” You can easily override it with your own rules Consistent translation messages
DOCTRINE RTEL, DYNAMIC RELATIONS We're using interfaces instead of implementation to define the relations When you override the model class, all relations get updated automatically Defaults are turned into entities if you don't provide your own class
WE LOVE EVENTS, YOU SHOULD TOO The default controller triggers multiple useful events during CRUD actions sylius.product.pre_create sylius.product.post_create
ORDERS AND CART SyliusOrderBundle + SyliusCartBundle Generic Order model with support of Adjustments Cart bundle provides actions and services for customer to interact with the Order entity The order/cart items can be easily customized to handle different options
COUNTRIES, ZONES AND ADDRESSES SyliusAddressingBundle Provides a very basic Address model Countries and their Provinces management Zones system with a ZoneMatcher service Useful for taxation and shipping zones
TAKE CARE OF YOUR INVENTORY SyliusInventoryBundle Built around 1 interface you need to implement Tracks every single inventory unit Based on events Items available on demand Backorders
HATE IT OR LOVE IT, TAXATION SyliusTaxationBundle TaxableInterface = heart of the bundle Multiple tax categories and rates support Customizable tax calculators Tax included in price
MERCHANDISE NEEDS TO BE SHIPPED SyliusShippingBundle Integrate through one interface Manage Shipments and Shipping Methods Custom shipping rules Flexible calculators system
JUST FEW STEPS MORE SyliusFlowBundle Useful for anything which takes more than 1 action to complete Checkouts, installation wizards, complex actions Used by OroCRM and Akeneo PIM for installers
PAYUM INTEGRATION SyliusPayumBundle NEW! Integrates Payum library into Sylius checkout Replaceable by other bundles in future PayPal Express Checkout and Stripe support Omnipay usage through a bridge
Make your app configurable, EASILY SyliusSettingsBundle You can define settings schema and the form User edits the settings through UI You get the access via services and Twig
THE WEB INTERFACE SyliusWebBundle Provides the default web interface for Sylius Contains all the templates and menu builders Splitted into Frontend & Backend parts
TO DO Documentation, documentation, documentation New default store look Rework translations and integrate with CrowdIn Polish the checkout process Integrate BazingaHateoasBundle for API Integrate Symfony CMF and Create.js
COMING SOON... Pull Requests Customer groups Subscriptions support Product reviews Symfony CMF integration (editable blocks and pages) Facebook/Amazon and so on...