filter

Ciao a tutti,

Vorrei far funzionare un filtro su una zii.widgets.grid.CGridView ma non funziona.

la mia view index è:




<?php

$this->breadcrumbs=array(

	'Incaricatis',

);

$model=new Incaricati('search');

$this->menu=array(

	array('label'=>'Crea Incaricati', 'url'=>array('create')),

	array('label'=>'Gestisci Incaricati', 'url'=>array('admin')),

);

?>

<h1>Incaricati</h1>

<hr>

<?php 

 $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'incaricati-grid',

#    'dataProvider'=>$dataProvider,

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(

	#	'id_incaricati',

 array(            // display 'create_time' using an expression

           

     	'header'=>'Responsabile',

         'value'=>'$data->idResponsabili0->cognome', 

        ),	

		'nome',

		'cognome',

		'idUfficio0.ufficio',

		#'idTipodatitrattati0.dati',

		

		array(

		    'class'=>'CLinkColumn',

			'header'=>'Esporta <br/>PDF',

			'imageUrl'=>'images/icona_pdf.gif',

		    'labelExpression'=>'$data->cognome',

		    'urlExpression'=>'"index.php?r=incaricati/export_pdf&id=".$data->id_incaricati',

		),	


	),

)); ?>



il mio dataProvider viene calcolato nel controller come segue:




	public function actionIndex()

	{

		

		$dataProvider=new CActiveDataProvider('Incaricati');

		#var_dump($dataProvider->getData());

		$this->render('index',array(

			'dataProvider'=>$dataProvider,

		));

	}



nel model c’è il mio search:




	public function search()

	{

		// Warning: Please modify the following code to remove attributes that

		// should not be searched.


		$criteria=new CDbCriteria;


		$criteria->compare('id_incaricati',$this->id_incaricati);

		$criteria->compare('nome',$this->nome,true);

		$criteria->compare('cognome',$this->cognome,true);

		$criteria->compare('id_ufficio',$this->id_ufficio);

		$criteria->compare('id_tipodatitrattati',$this->id_tipodatitrattati);

		$criteria->compare('id_responsabili',$this->id_responsabili);

		$criteria->compare('id_incarichi',$this->id_incarichi);


		return new CActiveDataProvider(get_class($this), array(

			'criteria'=>$criteria,

		));

	}	  



help me. thanks!!! :unsure:

Hai provato ad impostare il criteri del data provider che passi al widget?

Devi impostare filter nella configurazione della colonna del dataprovider. Dai una occhiata a questo commento (e anche all’intero articolo)

:lol: [RISOLTO]

dal view ho tolto




$model=new Incaricati('search');




e ho modificato il controller come segue :




	public function actionIndex()

	{

		 $model=new Incaricati('search');

		 $model->unsetAttributes();  // clear any default values

		 if(isset($_GET['Incaricati']))

			$model->attributes=$_GET['Incaricati'];


			$this->render('index',array(

			'model'=>$model,

			));




#		$dataProvider=new CActiveDataProvider('Incaricati');

#		$this->render('index',array('dataProvider'=>$dataProvider,));

	}



tutto funziona correttamente.

:D

:mellow:

domanda da un milione di lire?

ma perchè se aggiungo una bella




echo (" incaricati = ".$_GET['Incaricati']);



nel controller non mi visualizza nulla ?




	public function actionIndex()

	{

		 $model=new Incaricati('search');

		 $model->unsetAttributes();  // clear any default values

		 if(isset($_GET['Incaricati']))

		 {

			$model->attributes=$_GET['Incaricati'];

			var_dump($GLOBALS);

			echo (" incaricati = ".$_GET['Incaricati']);

		 } 

		

			$this->render('index',array(

			'model'=>$model,

			));




#		$dataProvider=new CActiveDataProvider('Incaricati');

#		$this->render('index',array('dataProvider'=>$dataProvider,));

	}



???

I parametri in get vengono passati dalla ajax request.

Se osservi la risposta ai refresh ajax con firebug, troverai la tua echo.