- Restrict payment method by zone. This enables to limit selected payment methods to specific zones or areas from the delivery address.
- Restrict payment method by shipping method - this means that it can disable specific shipment-payment combinations.
-
Run
$ composer require mangoweb-sylius/sylius-payment-restrictions-plugin
. -
Add plugin class to your
config/bundles.php
:return [ ... MangoSylius\PaymentRestrictionPlugin\MangoSyliusPaymentRestrictionPlugin::class => ['all' => true], ];
-
Your Entity
PaymentMethod
has to implement\MangoSylius\PaymentRestrictionPlugin\Model\PaymentMethodRestrictionInterface
. You can use TraitMangoSylius\PaymentRestrictionPlugin\Model\PaymentMethodRestrictionTrait
.<?php declare(strict_types=1); namespace App\Entity\Payment; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Core\Model\Payment as BasePayment; use MangoSylius\PaymentRestrictionPlugin\Model\PaymentMethodRestrictionInterface; use MangoSylius\PaymentRestrictionPlugin\Model\PaymentMethodRestrictionTrait; /** * @ORM\Entity * @ORM\Table(name="sylius_payment") */ class PaymentMethod extends BasePayment implements PaymentMethodRestrictionInterface { use PaymentMethodRestrictionTrait; public function __construct() { parent::__construct(); $this->shippingMethods = new ArrayCollection(); } }
-
Change
@SyliusAdmin/PaymentMethod/_form.html.twig
.... <div class="ui segment"> <h4 class="ui dividing header">{{ 'sylius.ui.details'|trans }}</h4> {{ form_errors(form) }} <div class="three fields"> {{ form_row(form.code) }} {{ form_row(form.zone) }} {{ form_row(form.position) }} </div> {{ form_row(form.enabled) }} <div class="two fields"> {{ form_row(form.channels) }} {{ form_row(form.shippingMethods) }} </div> </div> ...
-
Create and run doctrine database migrations.
For guide to use your own entity see Sylius docs - Customizing Models
- Develop your plugin in
/src
- See
bin/
for useful commands
After your changes you must ensure that the tests are still passing.
$ composer install
$ bin/console doctrine:schema:create -e test
$ bin/behat
$ bin/phpstan.sh
$ bin/ecs.sh
This library is under the MIT license.
Developed by manGoweb.