Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sylius - E-Commerce for Symfony2

Sylius - E-Commerce for Symfony2

Sylius presentation at the biggest Symfony community event - SymfonyCon 2014 in Madrid, Spain.

Pawel Jedrzejewski

November 28, 2014
Tweet

More Decks by Pawel Jedrzejewski

Other Decks in Technology

Transcript

  1. Payum Paypal Express Checkout Paypal Pro Checkout Paypal Rest Stripe.js

    Stripe Checkout Authorize.Net AIM Be2Bill CreditCard Be2Bill Onsite Payex
  2. Payum Paypal Express Checkout Paypal Pro Checkout Paypal Rest Stripe.js

    Stripe Checkout Authorize.Net AIM Be2Bill CreditCard Be2Bill Onsite Payex Offline Klarna Checkout DineroMail BitPay Paydollar PaylinkJustpay TcomPayWay Sagepay Redsys
  3. Payum Paypal Express Checkout Paypal Pro Checkout Paypal Rest Stripe.js

    Stripe Checkout Authorize.Net AIM Be2Bill CreditCard Be2Bill Onsite Payex Offline Klarna Checkout DineroMail BitPay Paydollar PaylinkJustpay TcomPayWay Sagepay Redsys 2Checkout Authorize.Net Buckaroo CardSave Dummy eWAY First Data GoCardless Manual
  4. Paypal Express Checkout Paypal Pro Checkout Paypal Rest Stripe.js Stripe

    Checkout Authorize.Net AIM Be2Bill CreditCard Be2Bill Onsite Payex Offline Klarna Checkout DineroMail BitPay Paydollar PaylinkJustpay TcomPayWay Sagepay Redsys 2Checkout Authorize.Net Buckaroo CardSave Dummy eWAY First Data GoCardless Manual Migs Mollie MultiSafepay Netaxept (BBS) Netbanx Pacnet PayFast Payflow PaymentExpress (DPS)
  5. CLEAN CODE • Decoupled architecture • DRY, SOLID, KISS •

    Testable code • DependencyInjection and many other design patterns
  6. Modern Foundation • Symfony full-stack combined with tons of excellent

    libraries from the community • Shares the platform with great projects like OroCRM, Akeneo PIM, Drupal, eZ Publish • Built on the shoulders of the open source giants
  7. Behavior DRIVEN DEVELOPMENT • StoryBDD with Behat maintains high level

    of communication quality among the community • We communicate using examples • Behat scenarios are executed as acceptance tests automatically on every change • SpecBDD using phpspec punishes us for any bad design decision • CodeQuality
  8. <?php ! namespace App\Bundle\CoreBundle\Entity; ! use Doctrine\ORM\Mapping as ORM; use

    Sylius\Component\Core\Model\Product as BaseProduct; ! /** * @ORM\Entity */ class Product extends BaseProduct { /** * @ORM\Column(type="decimal") */ private $fee; ! // Getters/setters. }
  9. <?php ! namespace App\Bundle\CoreBundle\Form\Type; ! use Sylius\Bundle\CoreBundle\Form\Type\ProductType as BaseProductType; use

    Symfony\Component\Form\FormBuilderInterface; ! class ProductType extends BaseProductType { public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); ! $builder ->add('fee', 'percentage') ->remove('price') ; } }
  10. ENJOY IT EVEN MORE! # app/config.yml ! sylius_product: classes: product:

    model: App\Bundle\CoreBundle\Entity\Product controller: Your\Class repository: Your\Class form: App\Bundle\CoreBundle\Form\Type\ProductType +
  11. Install SyliuS $ composer create-project sylius/sylius -s dev $ cd

    sylius $ app/console sylius:install $ composer create-project sylius/sylius-standard or
  12. What NEXT? We went crazy! • Deeper SymfonyCMF integration DONE

    • Flexible Multi-Channel DONE • Multi-Werehouse DONE • Full, RESTful JSON and XML API DONE • ORM or ElasticSearch search engine MERGED • CLONE RYAN WEAVER FOR DOCS SAKE!!!