Magento - 为付款方式添加自定义过滤器选项(下拉列表)

时间:2012-07-19 20:15:17

标签: magento-1.5 magento

我有一个模块,可以将付款方式列添加到Sales>订单网格。

$this->addColumn('method', array(
                'header' => Mage::helper('sales')->__('Payment<br />Method'),
                'index' => 'method',
                'renderer'  => 'Artizara_Ordergridadditions_Block_Catalog_Product_Renderer_Payment',
                'filter_index' => 'sfop.method', // refers to a declaration above
                type'  => 'options',
                'options' => array(0=>'Option 1',1=>'Option2'), // how would I get the keys to match to the renderer options???
        ));

渲染器代码(如下):

public function render(Varien_Object $row) {
    $value =  $row->getData($this->getColumn()->getIndex());

    switch ($value) {
    case 'authorizenet':
        $value = 'Credit Card (Authorize.net)';
        $span = '';
        break;
    case 'paypal_express':
        $value = 'Paypal Express';
        $span = '';
        break;
    case 'checkmo':
        $value = 'Check/Money Order';
        $span = '';
        break;
    case 'free':
        $value = 'No Payment Required';
        $span = '';
        break;
    default:
        $value = 'Unknow Payment Method';
        $span = 'style="color:red;"';
    }

    return '<span ' . $span . '>' . $value . '</span>';
}

只是希望能够在网格中为 过滤 制作下拉预填充渲染器选项

注意:如果我添加文本字段方法进行过滤,则必须从数据库中输入原始密钥(例如 - checkmo,paypal_express,authorizenet等)。

我希望能够在下拉列表中显示每个渲染器的值...(如何)?

编辑7/20/12

我已经尝试了以下两种方式,但还没有工作......

'options' => array(
                    array('value' => 'authorizenet', 'label' => 'Credit Card (Authorize.net)'),
                    array('value' => 'paypal_express', 'label' => 'Paypal Express'),
                    array('value' => 'checkmo', 'label' => 'Check/Money Order'),
                    array('value' => 'free', 'label' => 'No Payment Required'),
                ),

只需输入一个包含4个选项的下拉列表,如下所示:

Array
Array
Array
Array

我也尝试过这样:

'options' => array(
                    array => ('value' => 'authorizenet', 'label' => 'Credit Card (Authorize.net)'),
                    array => ('value' => 'paypal_express', 'label' => 'Paypal Express'),
                    array => ('value' => 'checkmo', 'label' => 'Check/Money Order'),
                    array => ('value' => 'free', 'label' => 'No Payment Required'),
                ),

但是我收到了一个错误:

Parse error: syntax error, unexpected T_DOUBLE_ARROW, expecting '('

3 个答案:

答案 0 :(得分:1)

试试这个:

        'type'      => 'options',
        'options'       => Mage::helper('payment')->getPaymentMethodList(true),
        'option_groups' => Mage::helper('payment')->getPaymentMethodList(true, true, true),

答案 1 :(得分:0)

使用选项哈希值和您在渲染器中使用的值:

'options' => array(
   'authorizenet' => 'Credit Card (Authorize.net)',
   [..]
)

在旁注中,您可能对我开发的Enhanced Admin Grids扩展程序感兴趣(page on Magento Connect),github上提供的最新版本带来了一个允许添加的自定义列系统新列没有重写,有很多可能性。
作为基础,它附带了订单网格的付款方式列。

答案 2 :(得分:0)

访问 http://www.magentocommerce.com/boards/viewthread/207929/

你可以得到你问题的答案。