2012-12-11 35 views
4

你能幫我嗎?我試圖在管理員中使用觀察者將新列添加到訂單網格。 有我的config.xml如何使用觀察者添加新列以排序網格?

<adminhtml> 
     <events> 
      <adminhtml_block_html_before> 
       <observers> 
        <order_grid> 
         <type>model</type> 
         <class>Order_Grid_Model_Observer</class> 
         <method>addItemsColumn</method> 
        </order_grid> 
       </observers> 
      </adminhtml_block_html_before> 
     </events> 
    </adminhtml> 

還有就是我觀察代碼:

class Order_Grid_Model_Observer 
{ 
    public function addItemsColumn($observer) 
    { 
     $_block = $observer->getBlock(); 
     $_type = $_block->getType(); 
     if ($_type == 'adminhtml/sales_order_grid') { 
      $_block->addColumn('total_item_count', array(
       'header'=> Mage::helper('sales')->__('Items'), 
       'width' => '80px', 
       'type' => 'text', 
       'index' => 'total_item_count', 
       'sortable' => false, 
       'filter' => false 
      )); 
      $_block->getColumn('real_order_id') 
       ->setData('filter_index', 'main_table.increment_id'); 

      $collection = $_block->getCollection(); 
      $collection->clear(); 
      $collection->getSelect() 
       ->joinLeft(array('o' => 'sales_flat_order'), 'o.entity_id = main_table.entity_id', array('total_item_count')); 
      $_block->setCollection($collection); 
     } 
    } 
} 

和我差不多做了,但是當我試圖通過一些字段進行排序網格,我得到的錯誤「列字段列表中的'increment_id'不明確「。這很奇怪,因爲我已經爲'increment_id'字段更新'filter_index'。任何想法爲什麼收集這個塊沒有更新?謝謝。

回答

5

「我們」(另一組)在Magento Hackathon上實施了擴展功能,可以輕鬆添加新列,重新排列列並從列中刪除列。此外,您可以將表連接到集合以添加列。

https://github.com/magento-hackathon/GridControl

+0

感謝您的出色工作!但是,這似乎並沒有過濾或排序添加的列。 – user1240207

+0

取決於你如何添加列。如果你無法做到這一點,請開啓一個問題 - 這些項目看起來並沒有被發現,但是如果我們找到時間,我們會檢查它。 –