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
Log.php
Obs: se eu retirar o
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á!
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á!