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

Pierwsze kroki z Sylius E-Commerce

Pierwsze kroki z Sylius E-Commerce

Sylius workshop conducted at PHPCon Poland 2014.

Avatar for Pawel Jedrzejewski

Pawel Jedrzejewski

September 27, 2014
Tweet

More Decks by Pawel Jedrzejewski

Other Decks in Technology

Transcript

  1. 2014 OBJECT ORIENTED PHP • Architektura komponentów • Żadnych Singletonów

    i static asses • Testowalny kod • Brak hacków i magii, również w extension pointsw
  2. nowoczesny Framework • Symfony full-stack wraz z wieloma doskonałymi bibliotekami

    community • Wspólna platforma z OroCRM, Akeneo PIM, Drupal 8, eZ Publish 5
  3. super elastyczność na symfony • Dynamiczne mapowanie modeli • Elastyczność

    Symfony container, parametryzacja klas • Doctrine RTEL • System kalkulatorów dla promocji, opcji wysłek, cen oraz podatków • Eventy eventy eventy + StateMachine • Walidacja nadpisywalna • Format agnostic controllers
  4. Resource management dla orm, Mongo dB ODM i PHPCR ODM

    Sylius Resource Layer ORM MongoDB PHPCR Twój własny storage?
  5. Behavior DRIVEN DEVELOPMENT • StoryBDD z Behat zapewnia wysoką jakość

    komunikacji w community • Rozmawiając o nowych funkcjonalnościach oraz bugach wykorzystujemy przykład - scenariusze Behat • Scenariusze te wykonywane są po każdej zmianie na Travis-CI • SpecBDD z phpspec wywołuje (pozytywną) frustrację przy każdej próbie zaprojektowania złego designu • Ogólna jakość i stabilność kodu na najwyższym poziomie
  6. Używanie pojedyńczego komponentu $ composer require sylius/product:v0.10.0 <?php ! $product

    = new Product(); ! $product ->setName(’T-Shirt’) ->setDescription(’Really cool t-shirt’) ;
  7. Instalacja symfony2 bundle $ composer require sylius/cart-bundle:v0.10.0 <?php ! class

    FooController extends Controller { public function barAction() { $cart = $this->get(’sylius.cart_provider’)->getCart(); } } Kilka prostych kroków z documentacji. (2-10 minut)
  8. Instalacja platformy SyliuS $ composer create-project sylius/sylius -s dev $

    cd sylius $ app/console sylius:install $ composer create-project sylius/sylius-standard lub
  9. Pobierz WORKSHOP Albo skopiuj z USB $ git clone http://github.com/Lakion/Sylius-Workshops.git

    # composer install —prefer-dist # Zmień hasło DB w parameters.yml $ app/console doctrine:database:create $ app/console doctrine:schema:update —force $ app/console doctrine:fixtures:load $ app/console doctrine:phpcr:repository:init
  10. cele warsztatu ★ Dodać producenta do wszystkich produktów ★ Dodać

    interfejs do zarządzania tymi producentami ★ Poznać podstawy architektury Syliusa ★ Poznać standardowe kroki kustomizacji ★ Get excited and have fun
  11. rozszerzanie Sylius • Potrzebujemy dwóch bundles • AppCoreBundle na serwisy,

    logikę biznesową i modele • AppWebBundle na nasz interfejs i dla kustomizacji widoków Sylius • app/console generate:bundle X 2 git / step-1-1
  12. Tworzymy model • Prosta klasa Vendor w App\Bundle\CoreBundle \Entity •

    Mapping doctrine • app/console doctrine:schema:update —force git / step-1-2
  13. Sylius Resource Bundle • Sylius resource management • Dodajemy Vendor

    do listy resources • app/console container:debug | grep ‚vendor’ git / step-1-3
  14. Generujemy formularz • Potrzebujemy formularz by dodawać oraz edytować producentów

    • app/console doctrine:generate:form AppCoreBundle:Vendor • Kilka modyfikacji w klasie formularza • Nazwa typu - app_vendor git / step-1-4
  15. nasz przyjaciel ROUTER • Potrzebujemy bardzo prosty routing (AppWebBundle/Resources/routing) •

    indexAction • createAction • updateAction • deleteAction git / step-1-5
  16. CREATE & UPDATE app_backend_vendor_create: pattern: /new methods: [GET, POST] defaults:

    _controller: app.controller.vendor:createAction _sylius: redirect: app_backend_vendor_update ! app_backend_vendor_update: pattern: /{id}/edit methods: [GET, PUT, POST] defaults: _controller: app.controller.vendor:updateAction _sylius: redirect: app_backend_vendor_update
  17. Dodajemy widoki • Chcemy wyświetlać listę producentów w backend •

    2 proste szablony do edycji • Osobny template dla formularza by ograniczyć duplikację git / step-1-6 git / step-1-7
  18. Kustomizacja modelu Produktu • Nowa klasa produktu App\Bundle\CoreBundle \Entity •

    getVendor() & setVendor() • Dodajemy nową klasę do konfiguracji w sekcji sylius_product git / step-1-8
  19. Modyfikujemy product form • Prosta klasa ProductType • Nadpisujemy metodę

    buildForm • Dodajemy pole „vendor” typu entity • Nadpisujemy szablon • SyliusWebBundle:Backend/Product/Form:_main.html.twig git / step-1-10
  20. App Web EXTENDS SYLIUS WEB • getParent() jest kluczem do

    sukcesu • Dziedziczenie bundles • Uwaga na konflikty nazw plików routingu git / step-1-11
  21. Dodajemy pozycję do BACKEND MENU • MenuBuilderListener w AppWebBundle •

    Rejestrujemy go w services.yml • KnpMenuBundle = Wystarczy dodać nową pozycję z linkiem do listy zamówień git / step-1-12