У меня возникают проблемы с попыткой создания новых параметров на вкладке «Управление параметрами». Когда вы создаете атрибут, я знаю, как правильно сохранять данные в базе данных. Я Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options
с моим модулем для создания настраиваемых полей.
Мой модуль:
config.xml
<config> <blocks> <adminhtml> <rewrite> <catalog_product_attribute_edit_tabs>Ceicom_Swatches_Block_Adminhtml_Tabs</catalog_product_attribute_edit_tabs> <catalog_product_attribute_edit_tab_options>Ceicom_Swatches_Block_Adminhtml_Options</catalog_product_attribute_edit_tab_options> </rewrite> </adminhtml> </blocks> </config>
Ceicom / Образцы / блок / Adminhtml / Options.php
class Ceicom_Swatches_Block_Adminhtml_Options extends Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options { public function __construct() { parent::__construct(); $this->setTemplate('ceicom/attribute/options.phtml'); } }
в файле Phtml, помещенном в пользовательские поля:
Очевидно, для этого нужно добавить новые столбцы в таблицу eav_attribute_option
. Например]: field_1
, field_2
.
Чтобы сохранить дополнительные поля, мне нужно переписать: Mage_Eav_Model_Resource_Entity_Attribute::_saveOption()
.
Любые советы о том, как это сделать, не меняя CORE, как я уже делал, используя rewrite
, и как загрузить банк данных для ввода для редактирования атрибута?
Это возможное решение:
В начале я попытался переопределить класс eav Mage_Eav_Model_Resource_Entity_Attribute, но я не работал. Подойдя ближе к коду, я обнаружил, что метод _saveOption вызывается другим классом, который расширяет Mage_Eav_Model_Resource_Entity_Attribute. Поэтому, если вы переопределите Mage_Eav_Model_Resource_Entity_Attribute своим специальным классом, я не буду иметь никакого эффекта в процессе сохранения. Я также понял, что есть другие кланы, которые расширяют Mage_Eav_Model_Resource_Entity_Attribute
Это классы:
Чтобы иметь возможность переопределить метод в процессе сохранения параметра атрибута, вам необходимо:
1) Создал класс, который расширяет Mage_Eav_Model_Resource_Entity_Attribute и переопределяет метод
class My_Module_Model_Eav_Resource_Entity_Attribute extends Mage_Eav_Model_Resource_Entity_Attribute{ protected function _saveOption(Mage_Core_Model_Abstract $object){ //your custom logic here } }
Не переопределите Mage_Eav_Model_Resource_Entity_Attribute в конфигурации вашего модуля, этот класс будет служить родителем нашего основного целевого класса Mage_Catalog_Model_Resource_Attribute, который принимает участие в процессе сохранения.
2) Переопределите в конфигурации вашего модуля класс Mage_Catalog_Model_Resource_Attribute с новым классом, который расширит ваш предыдущий созданный класс My_Module_Model_Eav_Resource_Entity_Attribute
Ваша конфигурация будет выглядеть так:
<global> <models> <!-- Overrides Mage_Catalog_Model_Resource_Attribute --> <catalog_resource> <rewrite> <attribute>My_Module_Model_Catalog_Resource_Attribute</attribute> </rewrite> </catalog_resource> </models> <!-- The rest of global config section --> </global>
Теперь вы увидите, что ваш пользовательский метод __saveOption выполняется при сохранении атрибута.