gpt4 book ai didi

php - Magento:添加自定义 EAV 属性,在创建实体时使用其默认值自动填充

转载 作者:行者123 更新时间:2023-12-04 06:40:23 31 4
gpt4 key购买 nike

有没有办法添加自定义 EAV 属性,该属性在创建新实体时自动设置为其默认值?

我设置了eav_attribute.is_required1eav_attribute.default_value0 (默认值),但是当我创建一个新对象时它不会自动设置属性。

顺便说一下,EAV实体类型是shipment .在销售数据存储在平面表中之前,我正在安装 1.3.2.4。

编辑

Jonathan Day 问道:“你是如何添加属性的?”

在 ModuleDir\sql\module_setup\mysql4-install-0.1.0.php 中,我有以下代码:

$eav = new Mage_Eav_Model_Entity_Setup('sales_setup');
$eav->addAttribute('shipment', 'fieldname', array('type' => 'int'));

我也有此代码用于更高版本的 Magento(在销售实体从 EAV 到平面表之后):
$w = $this->_conn;
$table = $this->getTable('sales_flat_shipment');
$w->addColumn($table, 'fieldname', 'int');
$w->addKey($table, 'fieldname', 'fieldname', 'index');

乔纳森·戴 (Jonathan Day) 问道:“您是否检查过该属性是否已添加到具有正确字段的 eav_attribute?”

是的,它已添加到 eav_attribute。并且该属性是可设置和可获取的。

最佳答案

如果你看 Varien_Object::getData() (在 /lib/Varien/Object.php 中)您可以看到以下行:

$default = null;

...并且任何丢失数据的实例都会返回 $default .因此,您在属性中设置的默认值将被忽略。

由于任何未定义的 'get' 由 getData() 处理这意味着 null将始终是默认值。似乎唯一的选择是覆盖 Sales_Model_Order_Shipment (或任何实体模型)并提供自定义 getter。

一个简单的例子是:
function getSample()
{
if (!$this->hasSample())
return 0;

return $this->getData('sample');
}

关于php - Magento:添加自定义 EAV 属性,在创建实体时使用其默认值自动填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328426/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com