CGridView

Hola

Tengo un CgridView:

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

‘id’=>‘id-grid’,

‘cssFile’ => Yii::app()->request->baseUrl . ‘/css/gridView/styles.css’,

‘dataProvider’=>$model->search(),

‘filter’=>$model,

‘columns’=>array(

'nombre',


  array(


	'class'=>'CButtonColumn',


	'buttons'  => array(


		'delete' => array(


			'visible' => $model->depende([color="#00FF00"]XXXXXXX[/color]),


		)


	),


),

),

));

Quiero mostrar u ocultar un botón dependiendo de unas condiciones, pero tengo que pasar a la función que devuelve true o false un valor de la fila que esta tratando.

¿Cómo se puede pasar un valor?

Muchas gracias

Hola.

La variable $data no te sirve?

Hola, esto es un ejemplo, de si el campo ‘activated’ es 1 muestre el botón, si no, no…




       array(

	    'class'=>'CButtonColumn',

            'buttons'=>array(

                        'delete' => array(

                                'visible'=>'$data->activated',

                        ),

                ),

   

	),



Saludos

Hola

Cuando quiero comparar con un campo como en ese ejemplo no hay problema, el asunto esta si quiero pasar el valor de ‘data->activated’ a la función si lo paso con las las comillas simple dentro de la función tengo el texto y si lo paso sin las comillas no tengo ningún valor.

Para el caso concreto que estoy haciendo encontré ya otra solución, la comento por si a alguien le ayuda, pero el problema de pasar valores a una función sigo sin verlo.

En caso concreto que tenia era mostrar un botón de borrado en un grid en caso de que no hubieran registros que dependieran de el. Como es una relación que tengo definida en el modelo simplemente con usarla me vale.

‘visible’ => ‘! $data->gastos[$data->id]->id’,

Con esto si hay algún registro dependiente ya me muestra el id del primero y no muestro el boton

Si la function la tienes en el model, por ejemplo:




class Menu extends MyActiveRecord {

    .......

    public function prueba() {

            // aquí tienes todas las propiedades del model, mediante $this, porque le llega el $data de la fila

            $nombre = $this->name; // por ejemplo, es el valor de esa fila

            return $this->activated;

    }

    .....

}



Entonces en el gridview:




array(

            'class'=>'CButtonColumn',

            'buttons'=>array(

                        'delete' => array(

                                'visible'=>'$data->prueba()',

                        ),

                ),

   

        ),



@safitanet, Muchas gracias

Funciona perfecto