我想知道,实现可扩展EAV模型的正确方法是什么。
我在中看到Magento\Catalog\Model\Product
该方法getExtensionAttributes()
是这样实现的:
public function getExtensionAttributes()
{
$extensionAttributes = $this->_getExtensionAttributes();
if (!$extensionAttributes) {
return $this->extensionAttributesFactory->create('Magento\Catalog\Api\Data\ProductInterface');
}
return $extensionAttributes;
}
但是在其他情况下,例如客户或类别模型
public function getExtensionAttributes()
{
return $this->_getExtensionAttributes();
}
如果以前未设置extension_attributes键,则可能导致结果为NULL。
务实的是,我希望第一个。这样Magento\Framework\Api\ExtensionAttributesInterface
,即使模型刚刚实例化,我也始终可以确保获得的实例。
但是,为什么在其他模块中不使用它呢?是否与我们在客户模块中看到的新的数据模型分离背道而驰?如果是这样,我们应该如何初始化扩展属性?