Pessoal, boa tarde!
Tenho a seguinte situação : tenho três filtros no cgrid view, e ao fazer um filtro em um deles, o valor das colunas embaixo do outro desaparece.
Ex:
Ao selecionar um usuário, as colunas abaixo do filtro de outro campo aparecem vazias. Aparentemente a busca funciona porém o campo não é exibido. Tentei de diversas maneiras, inclusive não consegui exibir a query da busca usando o Yii::trace() para entender o que está ocorrendo.
Mudei os filtros para usando activeDropDownList, conforme esse tópico filtering-related-tables
Segue o código.
admin.php
<?php
$tabelas = array('sch_scspm.tb_usuario'=>'Usuário', 'sch_scspm.tb_tp_num_sequencial'=>'Tipo de Receita', 'sch_scspm.tb_num_sequencial'=>'Faixa', 'sch_scspm.tb_especialidade_medica'=>'Especialidade', 'sch_scspm.tb_medico'=>'Prescritor', 'sch_scspm.tb_clinica'=>'Estabelecimento', 'sch_scspm.tb_medico_clinica'=>'PrescClinc', 'sch_scspm.tb_grafica'=>'Gráfica', 'sch_scspm.tb_requisicao'=>'Requisição');
$acoes = array('CADASTRAR'=>'CADASTRAR', 'ALTERAR'=>'ALTERAR', 'DELETAR'=>'DELETAR', 'CANCELADA TOTAL'=>'CANCELADA TOTAL', 'CANCELADA PARCIAL'=>'CANCELADA PARCIAL');
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'log-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array(
'name'=>'nome_tabela',
'value'=>$model->nome_tabela,
'filter'=> CHtml::activeDropDownList($model, 'nome_tabela', $tabelas, array('empty'=>'Escolha')),
),
array(
'name'=>'acao_log',
'value'=>$model->acao_log,
'filter' => CHtml::activeDropDownList($model, 'acao_log', $acoes, array('empty'=>'Escolha')),
),
'dt_log',
'hr_log',
array(
'name'=>'id_usuario',
'value'=>'Usuario::Model()->FindByPk($data->id_usuario)->nome',
'filter' =>CHtml::activeDropDownList($model, 'id_usuario', CHtml::listData(Usuario::model()->findAll(array('order'=>'nome')), 'id_usuario', 'nome'), array('empty'=>'Escolha')),
),
'ip_usuario',
array(
'class'=>'CButtonColumn',
'template'=>'{view}',
),
),
)); ?>
Log.php
public function relations() {
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'usuarios' => array(self::BELONGS_TO, 'Usuario', 'id_usuario'),
);
}
...
public function search() {
$criteria = new CDbCriteria;
$criteria->compare('id_log', $this->id_log);
$criteria->compare('nome_tabela', $this->nome_tabela);
$criteria->compare('id_tabela', $this->id_tabela);
$criteria->compare('acao_log', $this->acao_log);
//Yii::trace($this->acao_log );
$criteria->compare('informacao', $this->informacao);
if ($this->dt_log != NULL) {
$this->dt_log = Yii::app()->dateFormatter->format('yyyy-MM-dd', CDateTimeParser::parse($this->dt_log, 'dd/MM/yyyy'));
}
$criteria->compare('dt_log', $this->dt_log);
$criteria->compare('hr_log', $this->hr_log);
$criteria->compare('id_usuario', $this->id_usuario);
$criteria->order = 'id_log DESC';
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
));
;
}
Obs: se eu retirar o
array('empty'=>'Escolha')
Funciona, entretanto os combos ficam com valores fixados o que não é ideal para se eu quiser buscar apenas os logs dos usuários por exemplo.
Obs2: Quando utilizo todo os filtros dos combos os valores correspondentes aparecem nas colunas do grid corretamente.
Alguém teria alguma ideia do que pode estar ocorrendo?
Obrigado, desde já!