2017-02-21 16 views
0

나는 최근에 datepicker 모듈과 결합 된 맞춤 배송 모듈을 가지고 있으며 이제 배송 옵션이 결제 페이지에 표시되지 않습니다. config.xml 파일을 수정하여 두 모듈의 구성을 모두 결합했습니다. 그래서 이것이 충돌을 일으키는 지 궁금합니다. datepicker는 완벽하게 작동하지만 사용자 정의 운송 옵션로드가 콘솔에 표시되지 않습니다.Magento 2 : 맞춤 배송이 보이지 않는 이유는 무엇입니까?

구성 :

<?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'))]; 
    } 

} 

답변

0

그래서, 문제는 단순한 문법적 실수였다. 나는 $method->setCarrier('example');을 가지고 있었고, 운송 회사는 내 운송 코드로 설정해야했습니다. protected $_code = 'icacustomshipping';