首頁>Magento>source

我是Magento的新使用者,需要通過網站向Sales>Orders頁面添加過濾器。 我尝試覆盖Mage_Adminhtml_Block_Sales_Order_Grid並添加以下代碼:

protected function _prepareColumns()
{
   $this->addColumn('website', array(
          'header' => Mage::helper('sales')->__('Website'),
          'index' => 'store_id',
          'type'  => 'options',
          'width' => '70px',
          'options'   => Mage::getModel('core/website')->getCollection()->toOptionHash(),
    ));
}

這是結果,只有英国商店有網站關聯。 有人可以帮助我吗?

最新回復
  • 2019-12-5
    1 #

    我找到了解決方案:

    protected function _filterWebsiteConditionCallback($collection, $column)
    {
            if (!$value = $column->getFilter()->getValue()) {
                return $this;
            }
            $website = Mage::getModel('core/website')->load($value);
            foreach ($website->getGroups() as $group) {
                $stores = $group->getStores();
                foreach ($stores as $store) {
                    $ids[] = $store->getId();
                }
            }
            $this->getCollection()->addFieldToFilter('main_table.store_id', $ids);
            return $this;
    }
    
    protected function _prepareColumns()
    {
       $this->addColumn('website', array(
              'header' => Mage::helper('sales')->__('Website'),
              'index' => 'store_id',
              'type'  => 'options',
              'width' => '70px',
              'options'   => Mage::getModel('core/website')->getCollection()->toOptionHash(),
              'filter_condition_callback' => array($this, '_filterWebsiteConditionCallback'),
        ));
    }
    

  • magento2:Magento 2:JS檔案中的observableArray与淘汰JS有什麼用?
  • collection:Magento 1:删除實體的效能優化