有谁知道如何将包含输入类型文本元素或下拉元素的字段添加到magento后端产品列表网格中? 我设法在我的自定义模块后端产品列表网格中添加了一个新列:
$this->addColumn('blabla', array(
'header' => Mage::helper('customer')->__('On Hold?'),
'width' => '120',
'index' => 'bla',
'type' => 'options',
'options' => array('1' => 'Yes', '0' => 'No')
));
但是此命令只会将下拉列表添加到我的网格标题中,而我需要将该下拉列表显示在该网格上列出的每个产品的左侧(就像当您在产品编辑后端进行后端时出现的复选框一样)页面,您选择相关产品,或追加销售产品)
答案 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()
));
试试吧!祝你今天愉快。谢谢。