setono/sylius-climate-partner-plugin

Setono example plugin for Sylius.

Installs: 1 296

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 1

Type:sylius-plugin

dev-master / 1.0.x-dev 2022-01-26 12:04 UTC

This package is auto-updated.

Last update: 2022-04-27 07:23:39 UTC


README

Latest Version Latest Unstable Version Software License Build Status Code Coverage

This plugin will allow customers to add climate offsets to their orders.

frontend.mp4

Installation

composer require setono/sylius-climate-partner-plugin

Import configuration

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

Import routing

# config/routes/setono_sylius_climate_partner.yaml
setono_sylius_climate_partner:
    resource: "@SetonoSyliusClimatePartnerPlugin/Resources/config/routes.yaml"

or if your app doesn't use locales:

# config/routes/setono_sylius_climate_partner.yaml
setono_sylius_climate_partner:
    resource: "@SetonoSyliusClimatePartnerPlugin/Resources/config/routes_no_locale.yaml"

Add plugin class to your bundles.php

Make sure you add it before SyliusGridBundle, otherwise you'll get You have requested a non-existent parameter "setono_sylius_climate_partner.model.channel_climate_fee.class". exception.

<?php
// config/bundles.php

$bundles = [
    // ...
    Setono\SyliusClimatePartnerPlugin\SetonoSyliusClimatePartnerPlugin::class => ['all' => true],
    Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true],
    // ...
];

Copy API resources

In order to add ClimatePartner API endpoints to Sylius Order section, the API Resource declaration has to be overridden. If you've not overridden those configuration yet, you can simply copy the whole files into your local config/api_resources folder. If you've overridden them already, then you can just merge your config with the endpoints we added.

Resources declaration that need to be copied are:

If you already have them overridden, just add the following item operations:

Order.xml

<itemOperation name="shop_apply_climate_offset">
    <attribute name="method">PATCH</attribute>
    <attribute name="path">/shop/orders/{tokenValue}/apply-climate-offset</attribute>
    <attribute name="messenger">input</attribute>
    <attribute name="input">Setono\SyliusClimatePartnerPlugin\Api\Command\ApplyClimateOffset</attribute>
    <attribute name="openapi_context">
        <attribute name="summary">Apply climate offset to cart</attribute>
    </attribute>
    <attribute name="denormalization_context">
        <attribute name="groups">shop:climate-offset:apply</attribute>
    </attribute>
</itemOperation>

<itemOperation name="shop_remove_climate_offset">
    <attribute name="method">PATCH</attribute>
    <attribute name="path">/shop/orders/{tokenValue}/remove-climate-offset</attribute>
    <attribute name="messenger">input</attribute>
    <attribute name="input">Setono\SyliusClimatePartnerPlugin\Api\Command\RemoveClimateOffset</attribute>
    <attribute name="openapi_context">
        <attribute name="summary">Remove climate offset to cart</attribute>
    </attribute>
    <attribute name="denormalization_context">
        <attribute name="groups">shop:climate-offset:apply</attribute>
    </attribute>
</itemOperation>