Php 如何在magento2中将自定义属性添加到shipping方法

Php 如何在magento2中将自定义属性添加到shipping方法,php,magento2,magento-2.0,Php,Magento2,Magento 2.0,我正在尝试在magento2中创建一个模块,允许将自定义消息添加到载体或特定方法中。我成功地用网格和表单创建了管理部分。现在我正在努力在前端显示这个。我已经创建了js和模板文件,如果数据在estimate shipping methods结果中,该文件可以正常工作。我认为最简单的方法是将此消息添加到速率模型中。我已经创建了一个插件 <type name="Magento\Quote\Model\ShippingMethodManagement"> <plugin nam

我正在尝试在magento2中创建一个模块,允许将自定义消息添加到载体或特定方法中。我成功地用网格和表单创建了管理部分。现在我正在努力在前端显示这个。我已经创建了js和模板文件,如果数据在estimate shipping methods结果中,该文件可以正常工作。我认为最简单的方法是将此消息添加到速率模型中。我已经创建了一个插件

<type name="Magento\Quote\Model\ShippingMethodManagement">
    <plugin name="hatimeria_shippingrateinfo_add_message_to_rates"
            type="Hatimeria\ShippingRateInfo\Plugin\ShippingMethodManagement"
            sortOrder="10"
            disabled="false"/>
</type>

etc/di.xml
中,我为我的接口添加了首选项

<preference for="Hatimeria\ShippingRateInfo\Api\Quote\Data\ShippingMethodInterface" type="Hatimeria\ShippingRateInfo\Model\Rate\RateInfo" />
Hatimeria\ShippingRateInfo\Model\Rate\RateInfo.php

namespace Hatimeria\ShippingRateInfo\Api\Quote\Data;

use Magento\Framework\Api\ExtensibleDataInterface;

/**
 * Shipping Rate Info data interface
 *
 * @api
 */
interface ShippingMethodInterface extends ExtensibleDataInterface
{

    const RATEINFO = 'rate_info';

    /**
     * Retrieve rate info message
     *
     * @return string
     */
    public function getRateInfo();

    /**
     * Set rate info message
     *
     * @param string $rateInfo
     * @return $this
     */
    public function setRateInfo($rateInfo);
}
namespace Hatimeria\ShippingRateInfo\Model\Rate;

use Hatimeria\ShippingRateInfo\Api\Quote\Data\ShippingMethodInterface;
use Magento\Framework\Model\AbstractExtensibleModel;

class RateInfo extends AbstractExtensibleModel implements ShippingMethodInterface
{
    /**
     * Retrieve rate info message
     *
     * @return string
     */
    public function getRateInfo()
    {
        return $this->getData(self::RATEINFO);
    }

    /**
     * Set rate info message
     *
     * @param string $rateInfo
     * @return $this
     */
    public function setRateInfo($rateInfo)
    {
        return $this->setData(self::RATEINFO, $rateInfo);
    }
}
这是行不通的。生成速率时,速率模型不会返回其他扩展。任何帮助都将不胜感激。

请尝试以下步骤:

  • 运行
    bin/magento setup:di:compile
    生成
    ShippingMethodExtensionInterface
    和实现该接口的类(即使禁用缓存,也不会对每个请求执行此操作)
  • 在插件中实例化
    Magento\Quote\Api\Data\ShippingMethodExtension
    并向该对象添加数据,然后使用
    $entity->setExtensionAttributes($extensionModel)
  • 你能帮我回答这个问题吗?
    namespace Hatimeria\ShippingRateInfo\Model\Rate;
    
    use Hatimeria\ShippingRateInfo\Api\Quote\Data\ShippingMethodInterface;
    use Magento\Framework\Model\AbstractExtensibleModel;
    
    class RateInfo extends AbstractExtensibleModel implements ShippingMethodInterface
    {
        /**
         * Retrieve rate info message
         *
         * @return string
         */
        public function getRateInfo()
        {
            return $this->getData(self::RATEINFO);
        }
    
        /**
         * Set rate info message
         *
         * @param string $rateInfo
         * @return $this
         */
        public function setRateInfo($rateInfo)
        {
            return $this->setData(self::RATEINFO, $rateInfo);
        }
    }