在 Magento2 中创建多个自定义载体

creating several custom carriers in Magento2

我在编码方面有点新,在 Magento 方面超级新。我按照以下说明创建了一个自定义载体:https://devdocs.magento.com/guides/v2.4/howdoi/checkout/checkout-add-custom-carrier.html#create-configuration,它就像一个魅力。 然后,我尝试通过复制和重命名我的 Vendor 文件夹来创建另一个自定义运营商。我还更改了代码中的一些内容:

在registration.php

    <?php
    
    use Magento\Framework\Component\ComponentRegistrar;
    
    ComponentRegistrar::register(
        ComponentRegistrar::MODULE,
        'Vendor2_CustomShipping',
        __DIR__
    );

in composer.json

    {
        "name": "vendor2/custom-shipping",
        "description": "Custom shipping module",
        "require": {
            "php": "~7.2.0||~7.3.0",
            "magento/framework": "102.0.*",
            "magento/module-backend": "101.0.*",
            "magento/module-catalog": "103.0.*",
            "magento/module-config": "101.1.*",
            "magento/module-directory": "100.3.*",
            "magento/module-quote": "101.1.*",
            "magento/module-sales": "102.0.*",
            "magento/module-sales-rule": "101.1.*",
            "magento/module-shipping": "100.3.*",
            "magento/module-store": "101.0.*"
        },
        "type": "magento2-module",
        "license": [
            "OSL-3.0",
            "AFL-3.0"
        ],
        "autoload": {
            "files": [
                "registration.php"
            ],
            "psr-4": {
                "Vendor2\CustomShipping\": ""
            }
        },
        "version": "1.0.0"
    }

在module.xml中:

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
        <module name="Vendor2_CustomShipping" >
            <sequence>
                <module name="Magento_Store"/>
                <module name="Magento_Sales"/>
                <module name="Magento_Quote"/>
                <module name="Magento_SalesRule"/>
            </sequence>
        </module>
    </config>

在config.xml中:

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
        <default>
            <carriers>
                <customshipping>
                    <active>0</active>
                    <title>Custom Shipping Title</title>
                    <name>Custom Shipping Method Name</name>
                    <shipping_cost>10</shipping_cost>
                    <sallowspecific>0</sallowspecific>
                    <sort_order>15</sort_order>
                    <model>Vendor2\CustomShipping\Model\Carrier\Customshipping</model>
                </customshipping>
            </carriers>
        </default>
    </config>

并在 Customshipping.php 中:

namespace Vendor2\CustomShipping\Model\Carrier;

我成功启用了新模块并升级了 magento,但是当我转到我的管理员时,我只能看到一个自定义运营商选项可用。我还尝试删除第一个创建的模块,这使第二个模块出现。我的猜测是存在冲突,但我不知道如何解决。 谢谢

第二种送货方式正在覆盖第一种送货方式。为防止这种情况,需要进行更多更改:

在 etc/adminhtml/system.xml 中将 <group id="customshipping" ...> 更改为 <group id="customshipping2" ...>.

同样在 etc/config.xml 中将 <customshipping> 更改为 <customshipping2>.

在 Model/Carrier/Customshipping.php 中将 protected $_code = 'customshipping'; 更改为 protected $_code = 'customshipping2';.

进行这些更改后,您应该能够在 Magento 管理中看到两种新的送货方式。