Guu*_*uus 4 magento 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'
)
);
Run Code Online (Sandbox Code Playgroud)
示例数据如下所示: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
并显示具有此日期的所有行,而不管时间部分如何?
这个只在您尝试将值显示为日期和数据库列时显示的错误是datetime或timestamp.
这是因为日期更改为YYYY-MM-DD HH:MM:SS和HH:MM:SS为00:00:00,日期为from和to.日期应设置为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']);
Run Code Online (Sandbox Code Playgroud)
至
$value['to'] = $this->_convertDate($value['to'], $value['locale'])->addDay(1)->subSecond(1);
Run Code Online (Sandbox Code Playgroud)
由于这会更改所有过滤器的功能,因此更好的解决方案是更改本地代码:
$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;
}
Run Code Online (Sandbox Code Playgroud)
这将删除时间部分不会显示在网格的字段中,但可以让您按照上述方式使用过滤器.
归档时间: |
|
查看次数: |
6039 次 |
最近记录: |