2013-01-09 41 views
4

時間戳列的日期部分濾波器我有在網格下列柱:Magento的1.7 - 在電網

 $this->addColumn('order_date', 
     array(
      'header'=> $this->__('Date'), 
      'align' =>'left', 
      'width' => '100px', 
      'index' => 'order_date', 
      'type' => 'date', 
      'filter_index' => 'orders_alias.created_at' 
     ) 
    ); 

實施例的數據看起來像這樣:http://imageshack.us/photo/my-images/502/scr028.jpg/

當日期13 Oct 2012沒有行濾波被發現。這是有道理的,因爲它是一個時間戳列。 http://imageshack.us/photo/my-images/29/scr029.jpg/

如何使用Magento日期從/到選擇器並選擇13/10/2012並顯示所有行與此日期的行 而不考慮時間部分?

+0

看看app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Filter/Date.php,它可以給你一些線索 – ivantedja

+0

我會看看那個。 – Guus

+0

外部鏈接不再工作-.- – Phil

回答

9

這是一個僅在您試圖將值顯示爲日期和數據庫列時顯示的錯誤是datetime或timestamp。

發生這種情況的原因是日期從00到00:00變爲YYYY-MM-DD HH:MM:SS和HH:MM:SS。日期應該設置爲23:59:59。

這樣做的一種方法是更改​​app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Filter/Date.php中的代碼以支持此操作。在setValue函數只是改變

編輯:第一個解決方案將需要更改Datetime.php getValue肯定會是首選的。

$value['to'] = $this->_convertDate($value['to'], $value['locale']); 

$value['to'] = $this->_convertDate($value['to'], $value['locale'])->addDay(1)->subSecond(1); 

因爲這改變了所有的過濾器更好的解決辦法是改變你的本地代碼的功能:

$this->addColumn('order_date', 
    array(
     'header'=> $this->__('Date'), 
     'align' =>'left', 
     'width' => '100px', 
     'index' => 'order_date', 
     'type' => 'datetime', 
     'filter_index' => 'orders_alias.created_at', 
     'frame_callback' => array($this,'styleDate') 
    ) 
// ... 

public function styleDate($value,$row,$column,$isExport) 
{ 
    $locale = Mage::app()->getLocale(); 
    $date = $locale->date($value, $locale->getDateFormat(), $locale->getLocaleCode(), false)->toString($locale->getDateFormat()) ; 
    return $date; 
} 

這將被顯示刪除部分時間在網格的字段中,但會讓您按照上述方式使用過濾器。

+0

第二種解決方案的工作原理!首先,我忘記將類型從'date'更改爲'datetime'。現在過濾工作,謝謝! – Guus

+0

謝謝。第二個答案正常工作。 – KNKM