将下拉列表属性添加到类别 - 设置源

时间:2013-07-19 11:34:01

标签: magento magento-1.7

我为产品添加了“品牌”属性(下拉列表)。 我正在尝试使用“品牌”属性中的值将新属性(下拉列表)添加到类别。 如何为此类别属性设置正确的来源。 请在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 extends extends 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""

1 个答案:

答案 0 :(得分:3)

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

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

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

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

MyPackage_MyModule_Model_Selectattributes
MyPackage/MyModule/Model/Selectattributes.php

请注意文件名的问题。请注意,此在非区分大小写的文件系统中工作。