2013-01-09 4 views
4

에 시간 열의 일 부분을 필터링 I 그리드에서 다음 열이 :젠토 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/

나는이 선택에 /에서 젠토 날짜를 사용 13/10/2012을 선택하고 모든 행을 시간에 관계없이 부분이 날짜 을 표시 할 수있는 방법은?

+0

app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Filter/Date.php를 살펴보면 약간의 단서를 얻을 수 있습니다. – ivantedja

+0

그 점을 살펴 보겠습니다. – Guus

+0

외부 링크가 더 이상 작동하지 않습니다 .- – Phil

답변

9

날짜로 값을 표시하려고 할 때 나타나는 버그이며 데이터베이스 열은 datetime 또는 timestamp입니다.

날짜가 YYYY-MM-DD HH : MM : SS로, HH : MM : SS가 00:00:00으로 변경 되었기 때문에 발생합니다. 날짜는 23:59:59로 설정해야합니다.

이 작업을 수행하는 한 가지 방법은 app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Filter/Date.php의 코드를 변경하여이 기능을 지원하는 것입니다. 당신은 핵심 코드를 변경하지 마십시오뿐만 아니라 때문 (일일 추가하고 1 초 제거 제거 코드) Datetime.php getValue의 변화를 필요로 첫 번째 솔루션 두 번째 솔루션 : setValue의 기능에서 단지

EDIT 변경 확실히 선호 될 것입니다.

$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; 
} 

이 표시되는 시간 부분을 제거합니다 :

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

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

더 나은 솔루션이 해당 지역의 코드를 변경하는 것 모든 필터의 기능을 변경 그리드의 필드에 있지만 위에서 설명한대로 필터를 사용할 수 있습니다.

+0

두 번째 솔루션이 작동합니다! 먼저'date'에서'datetime'으로 타입을 바꾸는 것을 잊었습니다. 이제 필터 작업이 작동합니다. 감사합니다! – Guus

+0

감사합니다. 두 번째 대답은 잘 작동합니다. – KNKM