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