我想在管理员的管理属性选项菜单中的属性选项中添加自定义字段。与admin中位置列旁边的值列一样。我附上了一张图片。
我做了什么......(Magento 1.8)
在eav_attribute_option
提交后,在sort_order
表中创建了一个名为 value 的新字段。
更改了magento\app\design\adminhtml\default\default\template\eav\attribute\options.phtml
此文件,以显示位置列旁边的值列。
更改了此文件getOptionValues()
中的magento\app\code\core\Mage\Eav\Block\Adminhtml\Attribute\Edit\Options\Abstract.php
方法,以便从数据库中获取自定义值列的数据,并在管理员端显示。它以admin格式显示db的默认值。
但是当我想从管理面板保存时,数据不会保存在db中。
我一直在尝试找到实际处理写入数据库的模型或控制器,以确保我的新字段也能保存。
任何帮助都将不胜感激。
(我发布了一张图片让你明白,但我不能,因为我需要10点才能做到。)
答案 0 :(得分:1)
知道了!
更新:Mage / Eav / Model / Resource / Entity / Attribute.php
函数中的:_saveOption(Mage_Core_Model_Abstract $ object)
改变:
$sortOrder = !empty($option[’order’][$optionId]) ? $option[’order’][$optionId] : 0;
if (!$intOptionId) {
$data = array(
‘attribute_id’ => $object->getId(),
‘sort_order’ => $sortOrder,
);
$adapter->insert($optionTable, $data);
$intOptionId = $adapter->lastInsertId($optionTable);
} else {
$data = array(’sort_order’ => $sortOrder);
$where = array(’option_id =?’ => $intOptionId);
$adapter->update($optionTable, $data, $where);
}
为此:
$sortOrder = !empty($option[’order’][$optionId]) ? $option[’order’][$optionId] : 0;
$yourAttribute = (isset($option[’your_attr_field’]) && !empty($option[’your_attr_field’][$optionId])) ? $option[’your_attr_field’][$optionId] : ‘’;
if (!$intOptionId) {
$data = array(
‘attribute_id’ => $object->getId(),
‘sort_order’ => $sortOrder,
‘your_attr_field’ => $yourAttribute
);
$adapter->insert($optionTable, $data);
$intOptionId = $adapter->lastInsertId($optionTable);
} else {
$data = array(’sort_order’ => $sortOrder, ‘your_attr_field’ => $yourAttribute);
$where = array(’option_id =?’ => $intOptionId);
$adapter->update($optionTable, $data, $where);
}
我可以使用一些帮助来进行所有这些改变'Magento方式'