setono-custom/sylius-pickup-point-plugin-local

Sylius 提货点插件

安装: 2

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 20

类型:symfony-bundle


README

Latest Version Latest Unstable Version Software License Build Status

在您的选择配送步骤中添加包含提货点的 <select>

List of pickup points

支持的提供商

  • DAO
  • GLS
  • PostNord
  • 假提供商(用于开发和娱乐目的)

屏幕截图

商店

这是结账过程中选择提货点的配送方法步骤。

Screenshot showing checkout select shipping step with pickup points available

在结账的完成订单步骤中,您可以查看您选择的提货点。

Screenshot showing checkout complete step with pickup point address

管理员

在订单中,您可以看到客户选择的提货点。

Screenshot showing admin order shipping page with pickup point address

当您编辑配送方法时,可以将提货点提供商与该配送方法关联起来。

Screenshot showing admin shipping method with some pickup point providers

安装

步骤 1:安装并启用插件

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

$ composer require setono/sylius-pickup-point-plugin

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

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

<?php
# config/bundles.php

return [
    // ...
    Setono\SyliusPickupPointPlugin\SetonoSyliusPickupPointPlugin::class => ['all' => true],
    // ...
];

步骤 2:导入路由和配置

导入路由

# config/routes/setono_sylius_pickup_point.yaml
setono_sylius_pickup_point_plugin:
    resource: "@SetonoSyliusPickupPointPlugin/Resources/config/routing.yaml"

导入应用程序配置

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

(可选) 将固定装置导入您的应用程序

# config/packages/setono_sylius_pickup_point.yaml
imports:
    - { resource: "@SetonoSyliusPickupPointPlugin/Resources/config/app/fixtures.yaml" }    

步骤 3:更新模板

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

{{ form_row(form.pickupPointProvider) }}

请参阅 此处 的示例。

接下来,将以下内容添加到商店模板 SyliusShopBundle/Checkout/SelectShipping/_shipment.html.twig

{% form_theme form.pickupPointId '@SetonoSyliusPickupPointPlugin/Form/theme.html.twig' %}

{{ form_row(form.pickupPointId) }}

请参阅 此处 的示例。

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

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

请参阅 此处 的示例。

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

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

请参阅 此处 的示例。

步骤 4:自定义资源

配送资源

如果您尚未扩展配送资源,它应该看起来像这样

<?php
// src/Entity/Shipment.php

declare(strict_types=1);

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Setono\SyliusPickupPointPlugin\Model\PickupPointAwareTrait;
use Setono\SyliusPickupPointPlugin\Model\ShipmentInterface;
use Sylius\Component\Core\Model\Shipment as BaseShipment;

/**
 * @ORM\Entity()
 * @ORM\Table(name="sylius_shipment")
 */
class Shipment extends BaseShipment implements ShipmentInterface
{
    use PickupPointAwareTrait;
}

配送方法资源

如果您尚未扩展配送方法资源,它应该看起来像这样

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

declare(strict_types=1);

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Setono\SyliusPickupPointPlugin\Model\PickupPointProviderAwareTrait;
use Setono\SyliusPickupPointPlugin\Model\ShippingMethodInterface;
use Sylius\Component\Core\Model\ShippingMethod as BaseShippingMethod;

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

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

更新配送资源配置

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

# config/packages/_sylius.yaml

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

步骤 5:配置插件

启用所需的提供商

注意

  • faker 提供商将在生产环境中不起作用
  • gls 提供商需要安装 setono/gls-webservice-bundle
  • dao 提供商需要安装 setono/dao-bundle
  • post_nord 提供商需要安装 setono/post-nord-bundle
# config/packages/setono_sylius_pickup_point.yaml
setono_sylius_pickup_point:
    providers:
        faker: true
        gls: true
        post_nord: true
        dao: true

如果您想使用缓存

默认情况下禁用缓存。要启用它,请进行以下配置

# config/packages/setono_sylius_pickup_point.yaml
framework:
    cache:
        pools:
            setono_sylius_pickup_point.provider_cache_pool:
                adapter: cache.app

setono_sylius_pickup_point:
    cache:
        enabled: true
        pool: setono_sylius_pickup_point.provider_cache_pool

步骤 6:更新数据库模式

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

步骤 7:更新验证组

checkout_select_shipping 添加到 sylius.form.type.checkout_select_shipping.validation_groups

# config/packages/_sylius.yaml

parameters:
    sylius.form.type.checkout_select_shipping.validation_groups: ['sylius', 'checkout_select_shipping']

步骤 8:安装资产

bin/console sylius:install:assets  
bin/console sylius:theme:assets:install

玩耍

要查看提货点列表,请使用结账时以下示例地址

Dannebrogsgade 1
9000 Aalborg
DK
Hämeentie 1
00350 Helsinki
FI
Vasterhaninge 1
137 94 Stockholm
SE

请注意,提供商仅在特定国家设有取货点

因此,要同时与3个提供商合作 - 使用DK地址。

故障排除

  • /en_US/checkout/select-shipping步骤中,您在取货点ID字段看到“没有找到结果”。

    • 检查浏览器开发控制台并确保JS脚本正确加载。同时,请确保setono-pickup-point.js已编译(请确保您没有忘记运行sylius:install:assets)。

    • 请确保插件src/Resources/views/_javascripts.html.twig的内容实际上已渲染。如果没有,可能是因为您从自定义的layout.html.twig中删除了{{ sonata_block_render_event('sylius.shop.layout.javascripts') }}

    此外,如果已自定义,请确保在管理员的layout.html.twig中存在{{ sonata_block_render_event('sylius.admin.layout.javascripts') }}

    • 如果您使用主题,请确保在插件安装后执行了sylius:theme:assets:install
  • 服务“setono_sylius_pickup_point.registry.provider”依赖于一个不存在的服务“setono_post_nord.http_client”。

    您应指定setono_post_nord.http_client配置或定义Buzz\Client\BuzzClientInterface服务作为默认http客户端。请参阅Setono/PostNordBundle#1

    您应添加config/packages/buzz.yamlconfig/packages/nyholm_psr7.yaml配置。

  • 您在应用程序的/checkout/address步骤中遇到取货点不能为空的验证错误。

    请确保您已遵循安装步骤7中的说明。