【问题标题】:Magento - Adding New Column to Sales Order Grid Not WorkingMagento - 向销售订单网格添加新列不起作用
【发布时间】:2014-04-02 06:27:20
【问题描述】:

我正在尝试向 Magento 的销售订单网格(管理员 > 销售 > 订单)添加一个新列。我尝试按照此处的说明进行操作: http://www.atwix.com/magento/customize-orders-grid/

我已将核心文件复制到本地文件夹,以便我可以覆盖它:

来自:/public_html/wholesale/app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php

收件人:/public_html/wholesale/app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php

奇怪的是,无论我对 EITHER 文件进行什么更改,管理端都没有任何变化。我什至无法让 Mage::log() 工作。

一旦我解决了这个问题,我需要确保我所做的更改是正确的。我只是想获取客户的公司名称。这是我添加的两个部分:

protected function _prepareCollection()
{
    // This line is from the original
    $collection = Mage::getResourceModel($this->_getCollectionClass());

    // This is the call where I try to bring in the extra field
    // from another sales table
    $collection->getSelect()->join(
        'sales_flat_order_address',
        'sales_flat_order.entity_id = sales_flat_order_address.parent_id',
        array('company')
    );

    // These lines are also default
    $this->setCollection($collection);
    return parent::_prepareCollection();
}

在 _prepareColumns() 中:

$this->addColumn('company', array(
    'header' => Mage::helper('sales')->__('Company'),
    'index' => 'billing_company',
));

仅供参考,我使用的是 Magento 1.7.0.2

【问题讨论】:

    标签: magento grid admin ecommerce-sales


    【解决方案1】:

    试试这个:

    protected function _prepareCollection()
    {
        // This line is from the original
        $collection = Mage::getResourceModel($this->_getCollectionClass());
    
        // Join billing 'company' field from sales_flat_order_address table 
        $collection->getSelect()->join(
            array('addressTable' => 'sales_flat_order_address'),
            'main_table.entity_id = addressTable.parent_id AND addressTable.address_type = "billing"',
            array('billing_company'=>'company')
        );
    
        // These lines are also default
        $this->setCollection($collection);
        return parent::_prepareCollection();
    }
    
    protected function filterBillingCompany($collection, $column) {
        $val = (string)trim($column->getFilter()->getValue());
        if ($val != "") {
            $collection->getSelect()->where("addressTable.company LIKE '%{$val}%'");
        }
        return $this;
    }
    

    在 _prepareColumns() 中:

    $this->addColumn('company', array(
        'header' => Mage::helper('sales')->__('Company'),
        'index' => 'billing_company',
        'filter_condition_callback' => array($this, 'filterBillingCompany'),
    ));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多