setono/sylius-webhook-plugin

Handle webhooks in your Sylius store

Installs: 22

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 6

Type:sylius-plugin

dev-master / 1.0.x-dev 2022-01-24 03:19 UTC

README

Latest Version Latest Unstable Version Software License Build Status Code Coverage

Handle webhooks in your Sylius store

Installation

Step 1: Download the plugin

composer require setono/sylius-webhook-plugin

Step 2: Enable the plugin

Then, enable the plugin by adding the following to the list of registered plugins/bundles in the config/bundles.php file of your project:

<?php

return [
    // ...
    
    Setono\SyliusWebhookPlugin\SetonoSyliusWebhookPlugin::class => ['all' => true],
    
    // It is important to add plugin before the grid bundle
    Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true],
        
    // ...
];

NOTE that you must instantiate the plugin before the grid bundle, else you will see an exception like You have requested a non-existent parameter "setono_sylius_webhook.model.endpoint.class".

Step 3: Import routing

# config/routes/setono_sylius_webhook.yaml
setono_sylius_webhook:
    resource: "@SetonoSyliusWebhookPlugin/Resources/config/routes.yaml"

If you don't use localized URLs, use this routing file instead: @SetonoSyliusWebhookPlugin/Resources/config/routes_no_locale.yaml

Step 4: Configure plugin

# config/packages/setono_sylius_webhook.yaml
imports:
    - { resource: "@SetonoSyliusWebhookPlugin/Resources/config/app/config.yaml" }

Step 5: Update database schema

Use Doctrine migrations to create a migration file and update the database.

$ bin/console doctrine:migrations:diff
$ bin/console doctrine:migrations:migrate

Step 6: Using asynchronous transport (optional, but recommended)

All events in this plugin will extend the EventInterface. Therefore, you can route all events easily by adding this to your Messenger config:

# config/packages/messenger.yaml
framework:
    messenger:
        routing:
            # Route all command messages to the async transport
            # This presumes that you have already set up an 'async' transport
            # See docs on how to setup a transport like that: https://symfony.com/doc/current/messenger.html#transports-async-queued-messages
            'Setono\SyliusWebhookPlugin\Message\Event\EventInterface': async