在后台产品管理中显示值属性而不是id

时间:2015-10-28 10:20:18

标签: magento magento-1.9

我在后台(下拉列表)中的产品管理中添加了一个属性,我想显示值而不是id。

这里是解决方案现在它可以更新它:)

Grid.phtml

    protected function _prepareCollection()
        {
        ...
        $collection->addAttributeToSelect('manufacturer'); //my add attribute
        ...
        }

        protected function _prepareColumns()
            {

// add this code
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'manufacturer');
$options = $attribute->getSource()->getAllOptions(false);
$values = array();
foreach ($options as $option){
    $values[$option['value']] = $option['label'];
}

            $this->addColumn('manufacturer', //my add attribute
              array(
                    'header'=> 'Manufacturer',
                    'width' => '100px',
                    'index' => 'manufacturer',
                    'type'  => 'options',
                    'options' => $values,
                    ));

2 个答案:

答案 0 :(得分:0)

看看Mage_Adminhtml_Block_Catalog_Product_Grid :: _ prepareCollection()addColumn有很多属性。

您应该使用可能的值自定义选项索引。

http://www.demacmedia.com/magento-commerce/mini-tutorial-adding-custom-attributes-to-the-backend-product-grid/

中有一个很棒的教程

在简历中,您应该使用以下代码。

protected function _getAttributeOptions($attribute_code)
{
    $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $attribute_code);
    $options = array();
    foreach( $attribute->getSource()->getAllOptions(true, true) as $option ) {
        $options[$option['value']] = $option['label'];
    }
    return $options;
}

现在让我们将addColumn函数更新为:

$this->addColumn('manufacturer', //my add attribute
  array(
        'header'=> Mage::helper('catalog')->__('Manufacturer'),
        'width' => '100px',
        'index' => 'manufacturer',
        'type'  => 'text',
        'options' => $this->_getAttributeOptions('attribute_code'),
));

答案 1 :(得分:0)

获取属性只需使用

$attribute = Mage::getSingleton('eav/config')->getAttribute(Mage_Catalog_Model_Product::ENTITY, 'manufacturer');

而不是你的!