Personalizzare Una Colonna Di Cgridview

ciao a tutti,

ho bisogno del vostro aiuto

come dal titolo ho necessità di personalizzare una colonna di CGridView.

In particolare devo inserire una stringa ricavata dalla lettura di una tabella relativa ad un model diverso.

Mi spiego meglio:

ho una view con CGridView in cui ho specificato questa colonna:




array(

            'name'=>'valore',

       			'value'=>array('Internicode','interniToString'),

            'header'=>'Elenco',

          ),



nel model Internicode ho dichiarato:





public function interniToString()

	{

		//qui devo fare la query sulla tabella per estrapolare i dati che mi servono	

		$stringa="stringa ricavata da tabella";

		return $stringa;

	}




e fino qui funziona tutto.

ora vorrei inserire un parametro nella funzione:

public function interniToString($parametro)

quello che non riesco a capire è come passare il parametro nell’array di colums

qualcuno mi può aiutare?

grazie

ho detto una cosa senza senso?

Ho risolto, riporto come in caso sia di aiuto a qualcuno.

Mi ha aiutato questo articolo di sensorario che ringrazio.




 array(

            'name'=>'valore',

            'value'=>'Internicode::model()->interniToString("$data->id")',

            'header'=>'Elenco',

          ),



Secondo me ti conviene usare un metodo getter per questi casi


public function getInterni()

{

  return $this->interniToString($this->id);

}

e poi nel datagrid imposti semplicemente


 array(

            'name'=>'interniToString',

          ),

Le funzioni sono una cosa molto vecchio stile, e creare un nuovo model (nternicode::model()) solo per chiamarci sopra una funzione mi sembra brutto.

Usa i getter, sono metodi che aggiungono valore al tuo model, concettualmente significa che il model sa quali sono i suoi interni.