codeconjure / foxpost-sylius-plugin
FoxPost szállítási integráció Syliushoz: csomagfeladás, címke, nyomkövetés.
Package info
github.com/connorhu/foxpost-sylius-plugin
Type:sylius-plugin
pkg:composer/codeconjure/foxpost-sylius-plugin
Requires
- php: ^8.4
- codeconjure/foxpost: dev-main
- nyholm/psr7: ^1.8
- sylius/sylius: ^2.1
- symfony/http-client: ^7.2
Requires (Dev)
- php-http/mock-client: ^1.6
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^12.0 || ^13.0
- sylius-labs/coding-standard: ^4.4
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-19 05:34:26 UTC
README
FoxPost szállítási integráció Syliushoz: csomagfeladás, címke, nyomkövetés.
Installation
composer require codeconjure/foxpost-sylius-plugin
A pénztár felülete — host-szerződés a checkout mezőkről
A hostnak saját magának kell felülregisztrálnia a shipment hookable-t.
A plugin két hookot ad a sylius_shop.checkout.select_shipping.content.form.shipments
hookable-hez:
-
shipment— atemplates/shop/checkout/select_shipping/shipments.html.twig, ami a Stimulus controller wrappert (data-controller="foxpost-shipping") teszi ki minden shipment köré, ésorder-t is átad a beágyazott…shipments.shipmenthooknak.Ez a név viszont már foglalt: a SyliusShopBundle saját maga is definiál egy
shipmenthookot ugyanide (@SyliusShop/...), és a pluginprepend()-je nem tudja felülírni egy már betöltött bundle saját definícióját — aPrependExtensionInterfacecsak addig ér, amíg a konfigurációt EGYMÁSSAL egyesíti, a hookable-nevek foglalását nem. Emiatt ez a bejegyzés a pluginhooks.yaml-jában ma holt: amíg a host nem regisztrálja felül explicit sajátconfig/packages/_sylius.yaml-jában (priorityúgy, hogy nyerjen), a Sylius alapshipmentsablonja fut, ami nem ad átorder-t a beágyazott hooknak, és a FoxPost-blokkok (foxpost_fields.html.twig) meg sem jelennek — az bármelyik shipment-re vonatkozó hook csakform-ot ésindex-et kap.Ezt a hostnak kell megtennie:
sylius_twig_hooks: hooks: 'sylius_shop.checkout.select_shipping.content.form.shipments': shipment: template: '@CodeConjureSyliusFoxPostPlugin/shop/checkout/select_shipping/shipments.html.twig' priority: 0 # vagy magasabb, ha a host maga is hookol ide
A
foxpost_fields.html.twigerre az esetre — amikor a host elfelejti ezt megtenni, és a beágyazott hookordernélkül fut — önmagát védi: acontext.order-tis defined-del olvassa, hiánya esetén a számlázási cím emlékeztető blokk egyszerűen kimarad (nem hibázik), a négy checkout- mezőtől függő két blokk pedig a lenti szerződés szerint viselkedik. -
foxpost_fields— az alábbi négy mezőt olvassa (csak olvassa, nem ő hozza létre őket). A négy mezőt a hostnak kell hozzáadnia a shipment formhoz, pontosan ezekkel a nevekkel:
| Mező | Típus | Mire kell |
|---|---|---|
foxpostSameAsBilling |
checkbox | FoxPost házhozszállítás: a szállítási cím a számlázási címmel egyezik-e |
foxpostAddress |
beágyazott cím-form (lastName, firstName, countryCode, postcode, city, street, phoneNumber gyerekmezőkkel) |
FoxPost házhozszállítás: kézzel megadott cím |
pickupPointId |
hidden/szöveg | FoxPost csomagautomata: a kiválasztott automata azonosítója |
phoneNumber |
szöveg | FoxPost csomagautomata: értesítési telefonszám |
Ha egy mező hiányzik a formról, a hozzá tartozó blokk a sablonban némán
kimarad — nem hibázik. A két blokk (házhozszállítás-cím, illetve
csomagautomata) mindegyike a saját mezőit együtt ellenőrzi (is defined),
és csak akkor renderel, ha mindegyik jelen van — így nem fordulhat elő
félig kirajzolt blokk (pl. a checkbox látszik, de a hozzá tartozó cím-mezők
nem). Ez azért fontos, mert egy FormView nem létező gyerekmezőjének
közvetlen elérése (form.valami.mégvalami) Twig RuntimeError-t dob
strict_variables mellett — ez bármelyik olyan boltot render-hibával
állítaná le a pénztár szállítási lépésén, amelyik telepíti a plugint, de
nem replikálja pontosan ezt a négy mezőt.
A bolt — a jelen (codeconjure/egyhazzene-hu-bolt) — ma ezt a négy mezőt
a saját App\Form\Extensions\CheckoutShipmentTypeExtension-je adja hozzá.
Ez egy ismert, átmeneti állapot: a mezőkészlet a bolt saját cím- és
telefonszám-infrastruktúrájára épül (host-specifikus Address entitás,
telefonszám-validátor), amihez a plugin nem ad hidat, és amit egy másik,
nyitott issue (#99) úgyis átír (a szállítási cím a jövőben a mentett
címjegyzékből fog jönni, nem szabad szövegből). Egy másik Sylius bolt, ami
a plugint telepíti, de nem adja hozzá ezt a négy mezőt, egyszerűen nem
látja a FoxPost-mezőket a pénztárban — a checkout egyébként hibátlanul
működik.
License
MIT