如何在Yii中的CDetailView中显示ListData()

时间:2013-12-23 07:41:00

标签: php yii

假设我有一个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 ) 

任何帮助将不胜感激。

感谢。

3 个答案:

答案 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',
    ),