0

我为产品添加了“品牌”属性(下拉列表)。我正在尝试将新属性(下拉列表)添加到具有“品牌”属性值的类别。我应该怎么做才能为这个类别属性设置正确的来源。请在 mysql 安装文件中查看我的一段代码:

    $this->startSetup();
    $this->addAttribute('catalog_category', 'brand', array(
    'group'                => 'General',
    'type'              => 'int'
    'backend'           => '',
    'frontend_input'    => '',
    'frontend'          => '',
    'label'             => 'brand',
    'input'             => 'select'
    'class'             => '',
    'source'            => 'mymodule/selecattributes',
    'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
    'visible'           => true,
    'frontend_class'    => '',
    'required'          => false,
    'user_defined'      => true,
    'default'           => '',
    'position'          => 100,
));
$this->endSetup();

提前致谢。

编辑 1 我添加了类 MyPackage_MyModule_Model_SelectAttributes 扩展扩展 Mage_Eav_Model_Entity_Attribute_Source_Abstract :

class MyPackage_MyModule_Model_SelectAttributes extends Mage_Eav_Model_Entity_Attribute_Source_Abstract{
    public function getAllOptions()
    {
        $attributeCode = 'brand';

        $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $attributeCode); //here, "color" is the attribute_code
        $allOptions = $attribute->getSource()->getAllOptions(true, true);
        foreach ($allOptions as $instance) {
            $myArray[$instance['value']] = $instance['label'];
        }

        return $myArray;
    }
}

编辑 2 当我打开类别管理页面时,我收到此错误:

"Source model "mymodule/selectattributes" not found for attribute "brands""
4

1 回答 1

3

我猜你的源模型在一个名为Selectattributes.php. 如果您使用区分大小写的文件系统,则需要执行以下两项操作之一:

  • 将您的类定义文件重命名为Selectattributes.php

    或者

  • 将您的品牌属性的source_model值更改为mymodule/selectAttributes

当 Magento 尝试为您的属性实例化源模型时,正在计算的类名(以及因此的自动加载包含路径)的工作方式如下:

MyPackage_MyModule_Model_Selectattributes
MyPackage/MyModule/Model/Selectattributes.php

注意文件名的问题。请注意,这应该在不区分大小写的文件系统中工作。

于 2013-07-19T17:27:47.300 回答