mangoweb-sylius/sylius-ceska-posta-balikomaty-plugin

Sylius的Česká pošta balíkomaty插件


README

Česká Pošta Balíkomaty Plugin

功能

  • 添加了新的配送类型 Česká Pošta Balíkomat 分支,允许将订单产品发送到选定的Česká Pošta Balíkomat分支。
  • 用户可以在结账过程中的配送步骤中选择Česká Pošta Balíkomat分支。
  • 在最终结账步骤和后台面板中都可以看到Česká Pošta Balíkomat分支。
  • 导出带有Česká Pošta Balíkomat配送的CSV文件,并将其轻松导入Česká Pošta Balíkomaty的系统。

安装

  1. 运行 $ composer require mangoweb-sylius/sylius-ceska-posta-balikomaty-plugin

  2. 将插件类添加到您的 config/bundles.php

    return [
       ...
       MangoSylius\ShipmentExportPlugin\MangoSyliusShipmentExportPlugin::class => ['all' => true],
       MangoSylius\SyliusCeskaPostaBalikomatyPlugin\MangoSyliusCeskaPostaBalikomatyPlugin::class => ['all' => true],
    ];
  3. 将资源添加到 config/packeges/_sylius.yaml

    imports:
         ...
         - { resource: "@MangoSyliusCeskaPostaBalikomatyPlugin/Resources/config/resources.yml" }
  4. 将路由添加到 config/_routes.yaml

    mango_sylius_ceska_posta_balikomaty_plugin:
        resource: '@MangoSyliusCeskaPostaBalikomatyPlugin/Resources/config/routing.yml'
        prefix: /admin
    
    mango_sylius_shipment_export_plugin:
        resource: '@MangoSyliusShipmentExportPlugin/Resources/config/routing.yml'
        prefix: /admin
  5. 您的实体 Shipment 必须实现 \MangoSylius\SyliusCeskaPostaBalikomatyPlugin\Model\CeskaPostaBalikomatyShipmentInterface。您可以使用特质 \MangoSylius\SyliusCeskaPostaBalikomatyPlugin\Model\CeskaPostaBalikomatyShipmentTrait

    <?php 
    
    declare(strict_types=1);
    
    namespace App\Entity\Shipping;
    
    use Doctrine\ORM\Mapping as ORM;
    use MangoSylius\SyliusCeskaPostaBalikomatyPlugin\Model\CeskaPostaBalikomatyShipmentInterface;
    use MangoSylius\SyliusCeskaPostaBalikomatyPlugin\Model\CeskaPostaBalikomatyShipmentTrait;
    use Sylius\Component\Core\Model\Shipment as BaseShipment;
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="sylius_shipment")
     */
    class Shipment extends BaseShipment implements CeskaPostaBalikomatyShipmentInterface
    {
        use CeskaPostaBalikomatyShipmentTrait;
    }
  6. 您的实体 ShippingMethod 必须实现 \MangoSylius\SyliusCeskaPostaBalikomatyPlugin\Model\CeskaPostaBalikomatyShippingMethodInterface。您可以使用特质 \MangoSylius\SyliusCeskaPostaBalikomatyPlugin\Model\CeskaPostaBalikomatyShippingMethodTrait

    <?php 
    
    declare(strict_types=1);
    
    namespace App\Entity\Shipping;
    
    use Doctrine\ORM\Mapping as ORM;
    use MangoSylius\SyliusCeskaPostaBalikomatyPlugin\Model\CeskaPostaBalikomatyShippingMethodInterface;
    use MangoSylius\SyliusCeskaPostaBalikomatyPlugin\Model\CeskaPostaBalikomatyShippingMethodTrait;
    use Sylius\Component\Core\Model\ShippingMethod as BaseShippingMethod;
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="sylius_shipping_method")
     */
    class ShippingMethod extends BaseShippingMethod implements CeskaPostaBalikomatyShippingMethodInterface
    {
        use CeskaPostaBalikomatyShippingMethodTrait;
    }
  7. @MangoSyliusCeskaPostaBalikomatyPlugin/Admin/ShippingMethod/_ceskaPostaBalikomatyForm.html.twig 包含到 @SyliusAdmin/ShippingMethod/_form.html.twig 中。

    ...	
    {{ include('@MangoSyliusCeskaPostaBalikomatyPlugin/Admin/ShippingMethod/_ceskaPostaBalikomatyForm.html.twig') }}
    ...
  8. @MangoSyliusCeskaPostaBalikomatyPlugin/Shop/Checkout/SelectShipping/_ceskaPostaBalikomatyChoice.html.twig 包含到 @SyliusShop/Checkout/SelectShipping/_choice.html.twig 中。

    ...
    {{ include('@MangoSyliusCeskaPostaBalikomatyPlugin/Shop/Checkout/SelectShipping/_ceskaPostaBalikomatyChoice.html.twig') }}
  9. @SyliusShop/Common/_address.html.twig 中将 {% include '@SyliusShop/Common/_address.html.twig' with {'address': order.shippingAddress} %} 替换为 {{ include('@MangoSyliusCeskaPostaBalikomatyPlugin/Shop/Common/Order/_addresses.html.twig') }},在 @SyliusShop/Common/Order/_addresses.html.twig 中。

  10. @SyliusAdmin/Common/_address.html.twig 中将 {% include '@SyliusAdmin/Common/_address.html.twig' with {'address': order.shippingAddress} %} 替换为 {{ include('@MangoSyliusCeskaPostaBalikomatyPlugin/Admin/Common/Order/_addresses.html.twig') }},在 @SyliusAdmin/Order/Show/_addresses.html.twig 中。

  11. @MangoSyliusShipmentExportPlugin/_row.html.twig 中覆盖模板

    {% extends '@!MangoSyliusShipmentExportPlugin/_row.html.twig' %}
    
    {% block address %}
       {% if row.ceskaPostaBalikomat %}
            {{ include('@MangoSyliusCeskaPostaBalikomatyPlugin/_exporterRow.html.twig') }}
       {% else %}
           {{ parent() }}
       {% endif %}
    {% endblock %}
  12. 创建并运行doctrine数据库迁移。

有关如何使用自己的实体的指南,请参阅 Sylius文档 - 自定义模型

使用方法

  • 在后台面板中创建新的配送方法并启用Česká Pošta Balíkomat,保存它并点击 同步Česká Pošta Balíkomaty分支 按钮,以将分支列表加载到当前数据库中。

  • 将为代码为 'ceska_posta_balikomat' 的配送方法生成Česká Pošta Balíkomaty CSV导出,您可以在参数中更改此设置,它是一个数组。

    parameters:
        shippingMethodsCodes: ['ceska_posta_balikomat']
  • Česká Pošta Balíkomaty分支在其服务器上更新。只需每天(最好在夜间)调用此命令(通过 cron)一次。

    mango:ceska-posta-balikomaty:sync

开发

使用方法

  • /src 中开发您的插件
  • bin/ 中查看有用的命令

测试

在您的更改之后,您必须确保测试仍然通过。

$ composer install
$ bin/console doctrine:schema:create -e test
$ bin/behat
$ bin/phpstan.sh
$ bin/ecs.sh

许可

此库受MIT许可证的约束。

鸣谢

manGoweb 开发。