Cara no meu view eu uso isso aqui
<?php $this->widget('zii.widgets.grid.CGridView', array(
'itemsCssClass'=>'table table-striped table-bordered table-hover',
'afterAjaxUpdate' => "reinstallDatePicker",
'htmlOptions'=>array(
'class'=>'grid-view',
),
'id'=>'visitas-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array('header'=>'#',
'value'=>'$row + 1 + ($this->grid->dataProvider->pagination->currentPage*10)',),
array(
'name'=>'cd_vendedor',
'filter'=>CHtml::listData(Usuario::model()->findAll(),'cd_usuario','ds_nome'),
'value'=>'$data->cdVendedor->ds_nome',
),
array(
'name'=>'cd_pessoa',
'filter'=>CHtml::listData(Pessoa::model()->findAll(),'cd_pessoa','ds_nome'),
'value'=>'$data->cdPessoa->ds_nome',
),
'ds_visita',
array(
'name'=>'ds_detalhes',
'type'=>'raw',
),
array(
'name' => 'dt_visita',
'filter' => $this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model' => $model,
'attribute' => 'dt_visita',
'language' => 'pt-BR',
'htmlOptions' => array(
'id' => 'datepicker_for_dt_visita',
'size' => '10',
),
'options' => array(
'showOn' => 'focus',
'dateFormat' => 'dd/mm/yy',
'chageMonth' => true,
'changeYear' => true,
'showButtonPanel' => false,
)
), true),
//Estava formatando uma data formatada, Ramon
//'value' => 'Funcoes::formatadata($data->dt_visita)',
),
array(
'header'=>'<a href="'.Yii::app()->request->baseUrl.'/index.php?r='.Yii::app()->controller->id.'/create" rel="tooltip"><img src="./themes/abound/img/icons/plus.png" id="button" style="cursor:pointer;" title="Cadastrar"/></a>',
'class'=>'CButtonColumn',
),
),
));
Yii::app()->clientScript->registerScript('re-install-date-picker', "
function reinstallDatePicker(id, data) {
$('#datepicker_for_dt_visita').datepicker(jQuery.extend({showMonthAfterYear:false},jQuery.datepicker.regional['pt-BR'],{'dateFormat':'dd/mm/yy'}));
}
");
?>
e lá no meu model eu uso:
protected function beforeSave()
{
if(parent::beforeSave())
{
foreach($this->metadata->tableSchema->columns as $columnName => $column)
{
if ($column->allowNull == 1 && $this->getAttribute($column->name) == '')
{
$this->setAttribute($column->name, null);
}
else
{
if ($column->dbType == 'date')
{
$this->$columnName = Yii::app()->dateFormatter->format('yyyy-MM-dd', CDateTimeParser::parse($this->$columnName, 'dd/MM/yyyy'));
}
elseif ($column->dbType == 'datetime')
{
$data = $this->$columnName;
// Explode a barra e retorna três arrays
$data = explode("/", $data);
// Cria três variáveis $dia $mes $ano
list($dia, $mes, $ano) = $data;
$ano = explode(" ", $ano);
list($ano, $hora) = $ano;
$this->$columnName = "$ano/$mes/$dia $hora";
}
}
}
return parent::beforeSave();
}
return false;
}
protected function afterFind(){
foreach($this->metadata->tableSchema->columns as $columnName => $column){
if (!strlen($this->$columnName)) continue;
if ($column->dbType == 'date'){
$this->$columnName = Yii::app()->dateFormatter->formatDateTime(
CDateTimeParser::parse($this->$columnName, 'yyyy-MM-dd'),'medium',null);
}elseif ($column->dbType == 'datetime'){
$this->$columnName = Yii::app()->dateFormatter->formatDateTime(
CDateTimeParser::parse($this->$columnName, 'yyyy-MM-dd hh:mm:ss'));
}
}
return true;
}
e ainda no model lá no search eu coloco uma pesquisa dinamica segue abaixo:
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
if($this->dt_visita !=''){
$this->dt_visita = Yii::app()->dateFormatter->format('yyyy-MM-dd', CDateTimeParser::parse($this->dt_visita, 'dd/MM/yyyy'));
}
$criteria->compare('cd_visita',$this->cd_visita);
$criteria->compare('cd_vendedor',$this->cd_vendedor);
$criteria->compare('cd_pessoa',$this->cd_pessoa);
$criteria->compare('ds_visita',$this->ds_visita,true);
$criteria->compare('ds_detalhes',$this->ds_detalhes,true);
$criteria->compare('dt_visita',$this->dt_visita,true);
$criteria->compare('cd_pessoaProspeccao',$this->cd_pessoaProspeccao);
$criteria->compare('dt_gravado',$this->dt_gravado,true);
$criteria->compare('cd_usuario',$this->cd_usuario);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
qualquer dúvida fala ai