Magento-加入和某些自定义操作后筛选订单/发票收款

Magento-加入和某些自定义操作后筛选订单/发票收款,magento,collections,backend,invoice,Magento,Collections,Backend,Invoice,我试图在订单和发票的网格上显示付款选项(在后端) 我复制了核心文件 app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php 转到本地文件夹,然后编辑函数_prepareCollection()和_prepareColumns()。准备专栏是一件很容易的事,问题在于收集 我的变化: 文件:app/code/core/Mage/

我试图在订单和发票的网格上显示付款选项(在后端)

我复制了核心文件

app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php
app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php
转到本地文件夹,然后编辑函数_prepareCollection()和_prepareColumns()。准备专栏是一件很容易的事,问题在于收集

我的变化:

文件:app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php

protected function _prepareCollection(){
    $collection = Mage::getResourceModel($this->_getCollectionClass());

    $collection->getSelect()->joinLeft('sales_flat_order', 'main_table.entity_id = sales_flat_order.entity_id',array('total_qty_ordered', 'shipping_description'));
    $collection->getSelect()->joinLeft('sales_flat_order_payment', 'sales_flat_order_payment.parent_id = main_table.entity_id',array('method'));    


    // this is custom function that retrieves an array with payment option and its label
    $metode = $this->getActivePaymentMethods();

    // we get labels of payment options
    foreach ($collection as $afn) {
        foreach ($metode as $method) {
            if ($method['value'] == $afn['method']) {
                $afn->setData('method', $method['label']);
            }
        }
    }

    $this->setCollection($collection);
    return parent::_prepareCollection();
}
这段代码实际上做了应该做的事情。它检索此订单上使用的付款和装运选项。但之后,在集合中添加“method”会破坏分页和排序

它在一个页面上显示所有订单,没有订单工作。发票也是如此

我在谷歌上搜索了一个小时,一点运气都没有。你能告诉我去哪里看吗


谢谢。

如果我没听错,您需要用它的标签替换方法id。您应该在网格
\u prepareColumns()
方法中以下一种方式执行此操作:

    $this->addColumn('method', array(
        ...
        'type'  => 'options',
        'options' => array('method_id1' => 'label1', 'method_id2' => 'label2', ...),
    ));

我已经知道了。它显示正确的值。问题是,分页被破坏了。是的,这似乎是正确的。我只是不明白。谢谢你是我的朋友,是救命恩人!正如@Cags已经说过的,但我不明白。你证明了他在说什么。非常感谢。