This plugin will allow customers to add climate offsets to their orders.
frontend.mp4
composer require setono/sylius-climate-partner-plugin
# config/packages/setono_sylius_climate_partner.yaml
imports:
# ...
- { resource: "@SetonoSyliusClimatePartnerPlugin/Resources/config/app/config.yaml" }
# 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"
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],
// ...
];
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:
<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>