Magento 2:为什么我的定制运输不可见?
Magento 2: Why is my custom shipping not visible?
我有一个最近与日期选择器模块组合的自定义运输模块,现在结帐页面上看不到运输选项。我修改了 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>
<icacustomshipping>
<showmethod>1</showmethod>
<active>1</active>
<sallowspecific>0</sallowspecific>
<price>18</price>
<model>SR\DeliveryDate\Model\Carrier\Customshipping</model>
<name>Fixed</name>
<title>ICA</title>
<origin_address></origin_address>
<origin_suburb></origin_suburb>
<authentication></authentication>
<id></id>
<specificerrmsg>Error.</specificerrmsg>
</icacustomshipping>
</carriers>
</default>
<default>
<sr_deliverydate>
<general>
<format>yy-mm-dd</format>
<disabled>-1</disabled>
<hourMin>8</hourMin>
<hourMax>22</hourMax>
</general>
</sr_deliverydate>
</default>
</config>
运输模式
<?php
namespace SR\DeliveryDate\Model\Carrier;
use Magento\Quote\Model\Quote\Address\RateRequest;
use Magento\Shipping\Model\Rate\Result;
class Customshipping extends \Magento\Shipping\Model\Carrier\AbstractCarrier implements
\Magento\Shipping\Model\Carrier\CarrierInterface
{
/**
* @var string
*/
protected $_code = 'icacustomshipping';
/**
* @var bool
*/
protected $_isFixed = true;
/**
* @var \Magento\Shipping\Model\Rate\ResultFactory
*/
protected $_rateResultFactory;
/**
* @var \Magento\Quote\Model\Quote\Address\RateResult\MethodFactory
*/
protected $_rateMethodFactory;
/**
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param \Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory $rateErrorFactory
* @param \Psr\Log\LoggerInterface $logger
* @param \Magento\Shipping\Model\Rate\ResultFactory $rateResultFactory
* @param \Magento\Quote\Model\Quote\Address\RateResult\MethodFactory $rateMethodFactory
* @param array $data
*/
public function __construct(
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory $rateErrorFactory, \Psr\Log\LoggerInterface $logger, \Magento\Shipping\Model\Rate\ResultFactory $rateResultFactory, \Magento\Quote\Model\Quote\Address\RateResult\MethodFactory $rateMethodFactory, array $data = []
)
{
$this->_rateResultFactory = $rateResultFactory;
$this->_rateMethodFactory = $rateMethodFactory;
parent::__construct($scopeConfig, $rateErrorFactory, $logger, $data);
}
/**
* @param RateRequest $request
* @return Result|bool
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
*/
public function collectRates(RateRequest $request)
{
if (!$this->getConfigFlag('active')) {
return false;
}
/** @var \Magento\Shipping\Model\Rate\Result $result */
$result = $this->_rateResultFactory->create();
/** @var \Magento\Quote\Model\Quote\Address\RateResult\Method $method */
$method = $this->_rateMethodFactory->create();
$method->setCarrier('example');
$method->setCarrierTitle('TEST');
$method->setMethod('example');
$method->setMethodTitle('TEST');
/*you can fetch shipping price from different sources over some APIs, we used price from config.xml - xml node price*/
$amount = 18;
$method->setPrice($amount);
$method->setCost($amount);
$result->append($method);
return $result;
}
/**
* @return array
*/
public function getAllowedMethods()
{
return [$this->getCarrierCode() => __($this->getConfigData('name'))];
}
}
所以,问题是一个简单的语法错误。我有 $method->setCarrier('example');
,而我需要将承运人设置为我的运输代码 protected $_code = 'icacustomshipping';
我有一个最近与日期选择器模块组合的自定义运输模块,现在结帐页面上看不到运输选项。我修改了 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>
<icacustomshipping>
<showmethod>1</showmethod>
<active>1</active>
<sallowspecific>0</sallowspecific>
<price>18</price>
<model>SR\DeliveryDate\Model\Carrier\Customshipping</model>
<name>Fixed</name>
<title>ICA</title>
<origin_address></origin_address>
<origin_suburb></origin_suburb>
<authentication></authentication>
<id></id>
<specificerrmsg>Error.</specificerrmsg>
</icacustomshipping>
</carriers>
</default>
<default>
<sr_deliverydate>
<general>
<format>yy-mm-dd</format>
<disabled>-1</disabled>
<hourMin>8</hourMin>
<hourMax>22</hourMax>
</general>
</sr_deliverydate>
</default>
</config>
运输模式
<?php
namespace SR\DeliveryDate\Model\Carrier;
use Magento\Quote\Model\Quote\Address\RateRequest;
use Magento\Shipping\Model\Rate\Result;
class Customshipping extends \Magento\Shipping\Model\Carrier\AbstractCarrier implements
\Magento\Shipping\Model\Carrier\CarrierInterface
{
/**
* @var string
*/
protected $_code = 'icacustomshipping';
/**
* @var bool
*/
protected $_isFixed = true;
/**
* @var \Magento\Shipping\Model\Rate\ResultFactory
*/
protected $_rateResultFactory;
/**
* @var \Magento\Quote\Model\Quote\Address\RateResult\MethodFactory
*/
protected $_rateMethodFactory;
/**
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param \Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory $rateErrorFactory
* @param \Psr\Log\LoggerInterface $logger
* @param \Magento\Shipping\Model\Rate\ResultFactory $rateResultFactory
* @param \Magento\Quote\Model\Quote\Address\RateResult\MethodFactory $rateMethodFactory
* @param array $data
*/
public function __construct(
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory $rateErrorFactory, \Psr\Log\LoggerInterface $logger, \Magento\Shipping\Model\Rate\ResultFactory $rateResultFactory, \Magento\Quote\Model\Quote\Address\RateResult\MethodFactory $rateMethodFactory, array $data = []
)
{
$this->_rateResultFactory = $rateResultFactory;
$this->_rateMethodFactory = $rateMethodFactory;
parent::__construct($scopeConfig, $rateErrorFactory, $logger, $data);
}
/**
* @param RateRequest $request
* @return Result|bool
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
*/
public function collectRates(RateRequest $request)
{
if (!$this->getConfigFlag('active')) {
return false;
}
/** @var \Magento\Shipping\Model\Rate\Result $result */
$result = $this->_rateResultFactory->create();
/** @var \Magento\Quote\Model\Quote\Address\RateResult\Method $method */
$method = $this->_rateMethodFactory->create();
$method->setCarrier('example');
$method->setCarrierTitle('TEST');
$method->setMethod('example');
$method->setMethodTitle('TEST');
/*you can fetch shipping price from different sources over some APIs, we used price from config.xml - xml node price*/
$amount = 18;
$method->setPrice($amount);
$method->setCost($amount);
$result->append($method);
return $result;
}
/**
* @return array
*/
public function getAllowedMethods()
{
return [$this->getCarrierCode() => __($this->getConfigData('name'))];
}
}
所以,问题是一个简单的语法错误。我有 $method->setCarrier('example');
,而我需要将承运人设置为我的运输代码 protected $_code = 'icacustomshipping';