在Magento网格中添加自定义选择下拉菜单

4

我正在尝试在我的Magento网格中添加带有(select/options)的自定义下拉菜单,但它不起作用,我已经尝试过了。

$this->addColumn('dropdown', array(
'header' => Mage::helper('catalog')->__('Dropdown'),
'filter'    => false,
'sortable'  => false,
'type'=> 'options',
'options' => array('First'=>'firstvalue', 'second' =>'secondvalue')
));

我不是从数据库中获取值,而是从 API 中获取值。一开始我想在我的网格上显示这个选择下拉框,但我只看到了一个空白的空间。
谢谢。

编辑:

Example

实际上我需要做的是第一行带下拉菜单的内容,而第二行是我使用提供的代码所得到的结果。
我可以像“查看”列那样添加一个链接,但对于下拉菜单来说这并不起作用。


1
有什么错误?API实际返回了结果吗? - Matheno
我只是想显示选择下拉菜单,我还没有使用API。 网格已经显示,但“下拉”列为空。 - Terry Rapt
也许这会对你有所帮助:http://magento.stackexchange.com/questions/5190/upgrade-script-create-new-select-attribute-with-options - Matheno
这个链接提到的是如何向产品添加值(属性),而不是如何显示自定义下拉菜单。 - Terry Rapt
3个回答

3

有两种方法可以实现你想要的:

第一种方法:

$this->addColumn('dropdown', array(
    'header' => Mage::helper('catalog')->__('dropdown'),
    'filter'    => false,
    'sortable'  => false,
    'index' => 'stores',
    'type' => 'select',
    'values' => array('First'=>'firstvalue', 'second' =>'secondvalue')
));

第一种方式:它将直接显示在您的网格上。
第二种方式:
$this->addColumn('dropdown', array(
    'header' => Mage::helper('catalog')->__('dropdown'),
    'filter'    => false,
    'sortable'  => false,
    'index' => 'stores',
    'renderer' => 'Module_ModuleName_Block_Adminhtml_Renderer_Dropdown',
));

接下来,您需要在 Modulename\Block\Adminhtml\Renderer\ 中创建一个名为 Dropdown.php 的文件,其内容如下:

<?php
class Module_Modulename_Block_Adminhtml_Renderer_Dropdown extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract{

public function render(Varien_Object $row) {
    $html = '<select>';
    $html .= '<option value="First">First value</option>';
    $html .= '<option value="Second">Second value</option>';
    $html .= '</select>';
    return $html;
  }
}

您只需将ModuleModulename替换为您自己的,将Dropdown替换为您想要的内容即可。


1

我不能这样做,因为我正在创建一个扩展程序,并且在每次 API 调用之后,值可能会随时更改。 - Terry Rapt
好的,那么,在每次调用 _addColumnFilterToCollection 时,仍然要设置一个数据库列,并使用那个 inchoo.net 教程预填和更新数据库。这个做法可行吗? - Chris Rogers

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接