cleverage/sylius-dpd-plugin

为Sylius提供的简单DPD REST插件


README

Latest Version Software License

简介

此Sylius插件允许您使用DPD管理包裹运输。您可以定义DPD自提点配送方式。

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

用法

待添加截图

安装

步骤1:安装并启用插件

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

$ composer require cleverage/sylius-dpd-plugin

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

将bundle添加到您的config/bundles.php

<?php
# config/bundles.php

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

步骤2:导入路由和配置

导入路由

# config/routes/clerverage_sylius_dpd.yaml
clever_age_sylius_dpd_shop:
  resource: "@CleverAgeSyliusDpdPlugin/Resources/config/shop_routing.yml"

导入应用配置

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

步骤3:更新模板

管理后台部分

将以下内容添加到管理模板SyliusAdminBundle/Order/Show/_shipment.html.twig中的运输标题之后

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

示例在这里

商店部分

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

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

示例在这里

然后添加以下内容到商店模板SyliusShopBundle/Common/Order/_shipments.html.twig中的运输方式标题之后

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

示例在这里

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

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

{% include '@SyliusUi/_stylesheets.html.twig' with { 'path': 'bundles/cleveragesyliusdpdplugin/css/dpd-map.css' } %}
{% include '@SyliusUi/_stylesheets.html.twig' with { 'path': 'bundles/cleveragesyliusdpdplugin/css/dpd-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/cleveragesyliusdpsplugin/js/dpd-map.js') }}" type="module"></script>
    {% include '@SyliusUi/_javascripts.html.twig' with { 'path': 'bundles/cleveragesyliusdpdplugin/js/dpd-select-shipping.js' } %}

    {% include '@SyliusUi/_javascripts.html.twig' with { 'path': 'bundles/cleveragesyliusdpdplugin/js/dpd-select-pickup-point.js' } %}
    {% include '@SyliusUi/_javascripts.html.twig' with { 'path': 'bundles/cleveragesyliusdpdplugin/js/dpd-change-pickup-point.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\SyliusDpdPlugin\Contract\DpdShippingMethodInterface;
use CleverAge\SyliusDpdPlugin\Entity\Traits\DpdShippingMethodTrait;
use Sylius\Component\Core\Model\ShippingMethod as BaseShippingMethod;

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

订单资源

如果您尚未扩展订单资源,以下是它应该看起来的样子

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

declare(strict_types=1);

namespace App\Entity;

use CleverAge\SyliusDpdPlugin\Entity\Traits\DpdOrderTrait;
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
{
    use DpdOrderTrait;
}

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

更新运输和订单资源配置

接下来,您需要告诉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_dpd.yaml

clever_age_sylius_dpd:
  securityKey: 'security key'

现在享受吧!