cleverage/sylius-colissimo-plugin

Sylius 的 Colissimo 插件。


README

Latest Version Software License

介绍

此 sylius 插件允许您使用 Colissimo 管理包裹运输。您可以定义如 colissimo 自提点colissimo 家送 之类的送货方式。

对于自提点送货,根据用户输入的送货地址生成一个包含自提点列表的交互式地图。

用法

待添加截图

安装

步骤 1: 安装并启用插件

打开命令行,进入您的项目目录并执行以下命令以下载此插件的最新稳定版本

$ composer require cleverage/sylius-colissimo-plugin

此命令要求您全局安装 Composer,如 Composer 文档中的 安装章节 所述。

将捆绑包添加到您的 config/bundles.php

<?php
# config/bundles.php

return [
    // ...
    CleverAge\SyliusColissimoPlugin\CleverAgeSyliusColissimoPlugin::class => ['all' => true],
    // ...
];

步骤 2: 导入路由和配置

导入路由

# config/routes/clerverage_sylius_colissimo.yaml
clever_age_sylius_colissimo_shop:
  resource: "@CleverAgeSyliusColissimoPlugin/Resources/config/shop_routing.yml"

clever_age_sylius_colissimo_admin:
  resource: "@CleverAgeSyliusColissimoPlugin/Resources/config/admin_routing.yml"
  prefix: /admin

导入应用程序配置

# config/packages/_sylius.yaml
imports:
  - { resource: "@CleverAgeSyliusColissimoPlugin/Resources/config/config.yaml" }

步骤 3: 更新模板

管理员部分

将以下内容添加到管理员模板 SyliusAdminBundle/ShippingMethod/_form.html.twig

<h4 class="ui dividing header">{{ 'clever_age.admin.ui.shipping_method.title'|trans }}</h4>
{{ form_row(form.colissimoPickup) }}
{{ form_row(form.colissimoHomeDelivery) }}

示例在此

接下来,在管理员模板 SyliusAdminBundle/Order/Show/_shipment.html.twig 中送货标题之后添加以下内容

{% include "CleverAgeSyliusColissimoPlugin/Shipment/Label/pickupPoint.html.twig" %}

示例在此

商店部分

将以下内容添加到商店模板 SyliusShopBundle/Checkout/SelectShipping/_choice.html.twig

// ...
{% if method.isColissimoPickup %}
    {% include '@CleverAgeSyliusColissimoPlugin/Shipment/selectedPickupPoint.html.twig' %}
{% endif %}
// ...
{% if method.isColissimoPickup %}
    {% include '@CleverAgeSyliusColissimoPlugin/Shipment/map.html.twig' with {
        'pickupPoints': [myPickupPoints]
    } %}
{% endif %}

示例在此

接下来,在商店模板 SyliusShopBundle/Common/Order/_shipments.html.twig 中送货方法标题之后添加以下内容

{% include "@CleverAgeSyliusColissimoPlugin/Shipment/Label/pickupPoint.html.twig" %}

示例在此

步骤 4 : 更新样式、脚本和安装资源

将以下内容添加到商店模板 SyliusShopBundle/_styles.html.twig

{% include '@SyliusUi/_stylesheets.html.twig' with { 'path': 'bundles/cleveragesyliuscolissimoplugin/css/map.css' } %}
{% include '@SyliusUi/_stylesheets.html.twig' with { 'path': 'bundles/cleveragesyliuscolissimoplugin/css/popup.css' } %}

{# Important for the map ! #}
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.8.0/dist/leaflet.css"
      integrity="sha512-hoalWLoI8r4UszCkZ5kL8vayOGVae1oxXe/2A4AO6J9+580uKHDO3JdHb7NzwwzK5xr/Fs0W40kiNHxM9vyTtQ=="
      crossorigin=""
/>

示例在此

接下来,在商店模板 SyliusShopBundle/_scripts.html.twig 中添加以下内容

<script src="{{ asset('bundles/cleveragesyliuscolissimoplugin/js/map.js') }}" type="module"></script>
{% include '@SyliusUi/_javascripts.html.twig' with { 'path': 'bundles/cleveragesyliuscolissimoplugin/js/select-pickup-point.js' } %}
{% include '@SyliusUi/_javascripts.html.twig' with { 'path': 'bundles/cleveragesyliuscolissimoplugin/js/change-pickup-point.js' } %}
{% include '@SyliusUi/_javascripts.html.twig' with { 'path': 'bundles/cleveragesyliuscolissimoplugin/js/select-shipping.js' } %}

示例在此

安装资源

bin/console assets:install --symlink

步骤 5 : 自定义资源

送货方法资源

如果您还没有扩展送货方法资源,它应该看起来像这样

<?php
// src/Entity/ShippingMethod.php

declare(strict_types=1);

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use CleverAge\SyliusColissimoPlugin\Model\ShippingMethodInterface;
use CleverAge\SyliusColissimoPlugin\Model\ShippingMethodTrait;
use Sylius\Component\Core\Model\ShippingMethod as BaseShippingMethod;

/**
 * @ORM\Entity()
 * @ORM\Table(name="sylius_shipping_method")
 */
class ShippingMethod extends BaseShippingMethod implements ShippingMethodInterface
{
    use ShippingMethodTrait;
}

订单资源

如果您还没有扩展订单资源,它应该看起来像这样

<?php
// src/Entity/Order.php

declare(strict_types=1);

namespace App\Entity;

use CleverAge\SyliusColissimoPlugin\Model\OrderInterface;
use CleverAge\SyliusColissimoPlugin\Model\OrderTrait;
use Doctrine\ORM\Mapping as ORM;
use Sylius\Component\Core\Model\Order as BaseOrder;

/**
 * @ORM\Entity()
 * @ORM\Table(name="sylius_order")
 */
class Order extends BaseOrder implements OrderInterface
{
    use OrderTrait;
}

您可以在 此处 阅读有关扩展资源的更多信息。

更新送货和订单资源配置

接下来,您需要告诉 Sylius 您将使用您自己的扩展资源

# config/packages/_sylius.yaml

sylius_shipping:
  resources:
    shipping_method:
      classes:
        model: App\Entity\ShippingMethod

sylius_order:
  resources:
    order:
      classes:
        model: App\Entity\Order

步骤 6 : 更新数据库模式

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

步骤 7 : 配置插件

// config/packages/cleverage_sylius_colissimo.yaml

clever_age_sylius_colissimo:
  encryptionKey: 'your encryption key'

现在就可以享受了!