Now i can post…
My MODEL:
class ProdutosAdquiridos extends BaseProdutosAdquiridos
{
public $tb_categorias;
public $passvalor;
public static function model($className=__CLASS__) {
return parent::model($className);
}
public function searchlivros($passvalor="") {
$criteria = new CDbCriteria;
if(!Yii::app()->user->isGuest){
$criteria->condition = "produto_user_id =" .Yii::app()->user->id;
} else{$criteria->condition = "produto_user_id = -1";}
$criteria->with=array('meuSubproduto'=>array('together'=>true));
$criteria->compare('id_produtos_adquiridos', $this->id_produtos_adquiridos);
$criteria->compare('produto_user_id', $this->produto_user_id);
$criteria->compare('status_do_bloqueio', $this->status_do_bloqueio);
if (!empty($passvalor)){ $criteria->compare('meuSubproduto.tbl_categorias', '70');} //create to filter
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
public function attributeLabels() {
return array(
'id_produtos_adquiridos' => Yii::t('app', 'Id Produtos Adquiridos'),
'produto_user_id' => null,
// (...) others...
'tb_categorias' => Yii::t('app', 'Categ'),
);}
public function rules() {
return array(
array('id_produtos_adquiridos, produto_user_id, pedido, status_do_bloqueio', 'required'),
array('id_produtos_adquiridos, produto_user_id, pedido, meu_subproduto, status_do_bloqueio', 'numerical', 'integerOnly'=>true),
//(others...)
array('tb_categorias', 'safe'),
);
}
}
Peace of View
<?php
$this->widget('zii.widgets.jui.CJuiButton',array(
'name'=>'button',
'caption'=>'FILTER NOW',
'onclick'=>new CJavaScriptExpression('function(){ $.fn.yiiGridView.update("produtos-adquiridos-grid"); return false;}'),
));
?>
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'produtos-adquiridos-grid',
'dataProvider' => $model->searchlivros(),
'filter' => $model,
'columns' => array(
'id_produtos_adquiridos',
array(
'name'=>'produto_user_id',
'value'=>'GxHtml::valueEx($data->produtoUser)',
'filter'=>false,
),
array(
'name'=>'pedido',
'value'=>'GxHtml::valueEx($data->pedido0)',
'filter'=>GxHtml::listDataEx(Pedido::model()->findAllAttributes(null, true)),
),
'valor_produto',
array(
'name'=>'meu_subproduto',
'value'=>'GxHtml::valueEx($data->meuSubproduto)',
'filter'=>GxHtml::listDataEx(Subproduto::model()->findAllAttributes(null, true)),
),
array(
'name' => 'tb_categorias',
'filter' => CHtml::listData(Subproduto::model()->findAll(), 'id_subproduto', 'tbl_categorias'),
'value' => 'Subproduto::Model()->FindByPk($data->meu_subproduto)->tbl_categorias',
),
/*
array(
'name'=>'status_do_bloqueio',
'value'=>'GxHtml::valueEx($data->statusDoBloqueio)',
'filter'=>GxHtml::listDataEx(ProdutoBloqueado::model()->findAllAttributes(null, true)),
),
*/
array(
'class' => 'CButtonColumn',
),
),
)); ?>
How i set "FILTER NOW" button to send a variable to my model?
NOTE 1: "tb_categorias" is the column that i need to filter
NOTE 2: The filter on CGridView is not working for tbl_categorias. I do not know why.
NOTE 3: The filter work if i set value in criteria->compare. So my intention is to filter CGRIDVIEW updating via ajax, but I need to pass a parameter to model.
I appreciate any help.