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.

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