假设我有一个CDetailView代码,如下所示
$this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'title',
'owner.name',
'description:html',
array(
'label'=>'City',
'type'=>'raw',
'value'=>'', // ??? How to insert here ListData function that it will display list of different cities
),
),
));
现在在上面的代码中,我想插入列表数据数组中的城市列表。
$list = CHtml::listData($model->city, "city_id", "cities");
如果我将$list
保留在print_r()
中。它如下所示。
Array ( [1] => London [2] => Paris [3] => New York )
任何帮助将不胜感激。
感谢。
答案 0 :(得分:3)
如果它不起作用,那么你可以试试这个
'label'=>'City',
'type'=>'raw',
'value'=>array($model,'createListFunction'),
然后在你的模型类中创建一个名为createListFunction
的函数
像
public function createListFunction($data,$row)
{
//in this way you can access the corresponding attribute
$myTitle=$data->title;
// and finally you can return whatever you want to
return CHtml::listData($model->city, "city_id", "cities");
}
答案 1 :(得分:1)
Value
应该具有该列的值。因此,您必须使用filter
,如下所示。
$this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'title',
'owner.name',
'description:html',
array(
'label'=>'City',
'type'=>'raw',
'value'=>$data->city_id,
'filter'=>CHtml::listData($model->city, "city_id", "cities")
),
),
));
答案 2 :(得分:1)
array(
'label'=>'City',
'type'=>'raw',
'value'=>implode('<br />', $list),
'type' => 'raw',
),