gpt4 book ai didi

php - 为 Magento 属性创建新选项

转载 作者:可可西里 更新时间:2023-11-01 00:21:21 25 4
gpt4 key购买 nike

我在尝试在“管理选项”选项卡中创建新选项时遇到问题。当你创建一个属性时,我知道如何将数据正确地保存在数据库中。我正在用我的模块替换 Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options 以创建自定义字段。

我的模块:

配置文件

<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/Swatches/Block/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 文件中:

inserir a descrição da imagem aqui

显然,要做到这一点,需要在表 eav_attribute_option 中添加新列。例如]:field_1field_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

那些类是:

  • Mage_Catalog_Model_Resource_Attribute
  • Mage_Eav_Model_Mysql4_Entity_Attribute
  • Mage_Eav_Model_Resource_Attribute(摘要)

为了能够覆盖属性选项保存过程中的方法,您必须:

1) 创建了一个扩展 Mage_Eav_Model_Resource_Entity_Attribute 的类并覆盖了方法

类 My_Module_Model_Eav_Resource_Entity_Attribute 扩展了 Mage_Eav_Model_Resource_Entity_Attribute{
protected 函数 _saveOption(Mage_Core_Model_Abstract $object){
//你的自定义逻辑在这里
}
}

不要在你的模块配置中覆盖 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 方法。

关于php - 为 Magento 属性创建新选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21559681/

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