mangoweb-sylius / sylius-zasilkovna-plugin
Requires
- php: ^7.3
- ext-json: *
- mangoweb-sylius/sylius-shipment-export-plugin: ^0.4.0
- sylius/sylius: ^1.7.0
Requires (Dev)
- behat/behat: ^3.4
- behat/mink: ^1.7@dev
- behat/mink-browserkit-driver: ^1.3
- behat/mink-extension: ^2.2
- behat/mink-selenium2-driver: ^1.3
- friends-of-behat/page-object-extension: ^0.3
- friends-of-behat/suite-settings-extension: ^1.0
- friends-of-behat/symfony-extension: ^2.0
- friends-of-behat/variadic-extension: ^1.1
- lakion/mink-debug-extension: ^1.2.3
- phpspec/phpspec: ^6.0
- phpstan/phpstan: ^0.12.0
- phpstan/phpstan-doctrine: ^0.12.0
- phpstan/phpstan-strict-rules: ^0.12.0
- phpstan/phpstan-symfony: ^0.12.4
- phpstan/phpstan-webmozart-assert: ^0.12.0
- phpunit/phpunit: ^8.0
- sensiolabs/security-checker: ^6.0
- sylius-labs/coding-standard: ^3.1
- symfony/browser-kit: ^4.4
- symfony/debug-bundle: ^4.4
- symfony/dotenv: ^4.4
- symfony/intl: ^4.4
- symfony/web-profiler-bundle: ^4.4
- symfony/web-server-bundle: ^4.4
Conflicts
- symfony/browser-kit: 4.1.8
- symfony/dependency-injection: 4.1.8
- symfony/dom-crawler: 4.1.8
- symfony/routing: 4.1.8
- symfony/symfony: 4.1.8
README
Zásilkovna插件
特性
- 通过[cz] [pl] [sk] [hu] [ro] 将货物发送到Zasilkovna分支机构或通过Zasilkovna服务发送到客户地址。
- 用户可以在结账过程中在“配送”步骤的地图中选择Zásilkovna分支机构。
- 在最终结账步骤和行政面板中都可以看到Zásilkovna分支机构。
- 导出包含Zasilkovna运输(无论是到Zasilkovna分支机构还是客户地址)的CSV文件,并轻松导入Zasilkovna系统。
安装
-
运行
$ composer require mangoweb-sylius/sylius-zasilkovna-plugin
。 -
将插件类添加到您的
config/bundles.php
return [ ... MangoSylius\ShipmentExportPlugin\MangoSyliusShipmentExportPlugin::class => ['all' => true], MangoSylius\SyliusZasilkovnaPlugin\MangoSyliusZasilkovnaPlugin::class => ['all' => true], ];
-
将资源添加到
config/packeges/_sylius.yaml
imports: ... ... - { resource: "@MangoSyliusZasilkovnaPlugin/Resources/config/resources.yml" }
-
将路由添加到
config/_routes.yaml
mango_sylius_shipment_export_plugin: resource: '@MangoSyliusShipmentExportPlugin/Resources/config/routing.yml' prefix: /admin
-
您的实体
Shipment
必须实现\MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentInterface
。您可以使用特质\MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentTrait
。<?php declare(strict_types=1); namespace App\Entity\Shipping; use Doctrine\ORM\Mapping as ORM; use MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentInterface; use MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentTrait; use Sylius\Component\Core\Model\Shipment as BaseShipment; /** * @ORM\Entity * @ORM\Table(name="sylius_shipment") */ class Shipment extends BaseShipment implements ZasilkovnaShipmentInterface { use ZasilkovnaShipmentTrait; }
-
您的实体
ShippingMethod
必须实现\MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentInterface
。您可以使用特质\MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentTrait
。<?php declare(strict_types=1); namespace App\Entity\Shipping; use Doctrine\ORM\Mapping as ORM; use MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShippingMethodInterface; use MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShippingMethodTrait; use Sylius\Component\Core\Model\ShippingMethod as BaseShippingMethod; /** * @ORM\Entity * @ORM\Table(name="sylius_shipping_method") */ class ShippingMethod extends BaseShippingMethod implements ZasilkovnaShippingMethodInterface { use ZasilkovnaShippingMethodTrait; }
-
将
@MangoSyliusZasilkovnaPlugin/Admin/ShippingMethod/:zasilkovnaForm.html.twig
包含到@SyliusAdmin/ShippingMethod/_form.html.twig
中。... {{ include('@MangoSyliusZasilkovnaPlugin/Admin/ShippingMethod/_zasilkovnaForm.html.twig') }}
-
将
@MangoSyliusZasilkovnaPlugin/Shop/Checkout/SelectShipping/_zasilkovnaChoice.html.twig
包含到@SyliusShop/Checkout/SelectShipping/_choice.html.twig
中。... {{ include('@MangoSyliusZasilkovnaPlugin/Shop/Checkout/SelectShipping/_zasilkovnaChoice.html.twig') }}
-
在
@SyliusShop/Common/Order/_addresses.html.twig
中将{% include '@SyliusShop/Common/_address.html.twig' with {'address': order.shippingAddress} %}
替换为{{ include('@MangoSyliusZasilkovnaPlugin/Shop/Common/Order/_addresses.html.twig') }}
。 -
在
@SyliusAdmin/Order/Show/_addresses.html.twig
中将{% include '@SyliusAdmin/Common/_address.html.twig' with {'address': order.shippingAddress} %}
替换为{{ include('@MangoSyliusZasilkovnaPlugin/Admin/Common/Order/_addresses.html.twig') }}
。 -
在
@MangoSyliusShipmentExportPlugin/_row.html.twig
中覆盖模板。{% extends '@!MangoSyliusShipmentExportPlugin/_row.html.twig' %} {% block address %} {% if row.zasilkovna %} {{ include('@MangoSyliusZasilkovnaPlugin/_exporterRow.html.twig') }} {% else %} {{ parent() }} {% endif %} {% endblock %}
-
创建并运行Doctrine数据库迁移。
有关如何使用自己的实体的指南,请参阅Sylius文档 - 自定义模型
使用方法
- 对于发送到Zasilkovna分支机构,在行政面板中创建新的运输方式,设置
Zásilkovna API密钥
并保留承运人ID
为空。 - 对于发送到客户地址,在行政面板中创建新的运输方式,设置
承运人ID
并保留Zasilkovna API密钥
为空。 - 如果您需要通过国家过滤地图中的点,请使用“在地图中仅显示特定国家的取货点”。如果留空,则显示所有受支持国家中的所有点。
- 将生成Zásilkovna CSV导出,用于具有代码'zasilkovna'的运输方式,您可以在参数中更改此设置,它是一个数组(因此可以包含多个代码,例如,如果您需要为不同国家提供不同的价格,则需要更多运输方式;始终使用相同的API密钥是允许的)
parameters: shippingMethodsCodes: ['zasilkovna']
您应将此数组中包含运输到Zasilkovna分支和通过Zasilkovna服务运送到客户地址的方法。 - Packeta API文档:[https://docs.packetery.com/03-creating-packets/01-csv-import.html](https://docs.packetery.com/03-creating-packets/01-csv-import.html)
开发
用法
- 在
/src
目录中开发您的插件 - 在
bin/
目录下查看有用的命令
测试
在您的更改后,您必须确保测试仍然通过。
$ composer install
$ bin/console doctrine:schema:create -e test
$ bin/behat
$ bin/phpstan.sh
$ bin/ecs.sh
许可
此库受MIT许可。
致谢
由manGoweb开发。