Magento后端产品列表网格

时间:2012-09-07 14:41:38

标签: magento

有谁知道如何将包含输入类型文本元素或下拉元素的字段添加到magento后端产品列表网格中? 我设法在我的自定义模块后端产品列表网格中添加了一个新列:

$this->addColumn('blabla', array(
        'header'  => Mage::helper('customer')->__('On Hold?'),
        'width'   => '120',
        'index'   => 'bla',
        'type'    => 'options',
        'options' => array('1' => 'Yes', '0' => 'No')
));

但是此命令只会将下拉列表添加到我的网格标题中,而我需要将该下拉列表显示在该网格上列出的每个产品的左侧(就像当您在产品编辑后端进行后端时出现的复选框一样)页面,您选择相关产品,或追加销售产品)

3 个答案:

答案 0 :(得分:0)

简单快速的解决方案作为下一步研究的提示 - 重写Mage_Adminhtml_Block_Catalog_Product_Grid,函数_prepareColumns。例如,您将创建块Module_Name_Block_Sample

class Module_Name_Block_Sample extends Mage_Adminhtml_Block_Catalog_Product_Grid
{
    protected function _prepareColumns()
    {
        $this->addColumn('blabla', array(
            'header' => Mage::helper('customer')->__('On Hold?'),
            'width' => '120',
            'index' => 'bla',
            'type' => 'options',
            'options' => array('1' => 'Yes', '0' => 'No')
        ));

        return parent::_prepareColumns();
    }
}

你将把它作为第一个字段。它可能需要重写_prepareCollection。

但我知道,这可能不是更好的解决方案。

答案 1 :(得分:0)

您需要的是自定义渲染器,您可以在其中显示所需的任何HTML。像这样:

$this->addColumn('blabla', array(
    'header'  => Mage::helper('customer')->__('On Hold?'),
    'width'   => '120',
    'index'   => 'bla',
    'renderer' => 'module/sample_grid_renderer'
));

然后创建渲染器类,在其中创建所需的HTML:

class Module_Name_Block_Sample_Grid_Renderer 
    extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
    public function render(Varien_Object $row)
    {
        $html = '<select name="row'.$row->getId().'"></select>';
        return $html;
    } 
}

答案 2 :(得分:0)

  $country = $fieldset->addField('country', 'select', array(
  'name'  => 'country',
  'label'     => 'Country',
  'values'    => Mage::getModel('adminhtml/system_config_source_country') ->toOptionArray()
  ));

试试吧!祝你今天愉快。谢谢。

相关问题