php - example - yii2 gridview custom column
Agregar columna como enlace en CGridView (1)
Necesito agregar un enlace a mi gridview Este enlace llamará a la acción con parámetros como user_id y course_id.
entonces escribí este código
Vista:
<?php
$cmodel=new Courses;
$user_id=intval($_GET[''user_id'']);
$this->widget(''zii.widgets.grid.CGridView'', array(
''id''=>''courses-grid'',
''dataProvider''=>$cmodel->searchCources($user_id),
''filter''=>$cmodel,
''columns''=>array(
''course_id'',
''name_ar'',
''name_en'',
''code'',
''t_time'',
array(
''name'' => ''t_time'',
''value'' => "CHtml::link(''Add'',array(''packages/add'',''user_id''=>$user_id,''course_id''=>$data->course_id))",
''type'' => ''raw'',
)
,
/*
''req'',
''aud'',
''targets'',
''programs'',
''criterion'',
''section_id'',
''acc'',
''en'',
''ar'',
''fr'',
''image'',
*/
)));
?>
Modelo:
<?php
...
public function searchCources($user_id)
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare(''course_id'',$this->course_id);
$criteria->compare(''name_ar'',$this->name_ar,true);
$criteria->compare(''name_en'',$this->name_en,true);
$criteria->compare(''code'',$this->code,true);
$criteria->compare(''t_time'',$this->t_time);
$criteria->compare(''intro'',$this->intro,true);
$criteria->compare(''req'',$this->req,true);
$criteria->compare(''aud'',$this->aud,true);
$criteria->compare(''targets'',$this->targets,true);
$criteria->compare(''programs'',$this->programs,true);
$criteria->compare(''criterion'',$this->criterion,true);
$criteria->compare(''acc'',$this->acc);
$criteria->compare(''en'',$this->en);
$criteria->compare(''ar'',$this->ar);
$criteria->compare(''fr'',$this->fr);
$criteria->compare(''image'',$this->image,true);
$criteria->addCondition('' course_id not in ( select course_id from ict_cpackage where user_id=''.$user_id.'') '');
return new CActiveDataProvider($this, array(
''criteria''=>$criteria
));
}
...
?>
Pero devuelve este error:
Undefined variable: data
1- ¿Por qué devolver este error? 2- cómo puedo acceder al valor de la columna
Gracias por adelantado
''value'' => "CHtml::link(''Add'',array(''packages/add'',''user_id''=>$user_id,''course_id''=>/$data->course_id))",
Está utilizando ""
para citar su cadena, por lo que necesita escanear los $data
$
on $data
, por lo que se lee como /$data
.