2012-03-14 104 views
0

我在CDetailView Yii上显示FK的描述时遇到了麻烦。 我有上浏览 这个代码,其中kode_kab和kode_prop之间的关系是master_kab具有主键(复合=> kode_prop和kode_kab)CDetailView Yii显示外键描述

$this->widget('zii.widgets.CDetailView', array(
     'data'=>$model, 
     'attributes'=>array(
'kode_prop'=>array(
        'name'=>'Provinsi', 
        'value'=>master_prop::model()->FindByPk($model->kode_prop)->propinsi, 
       ), 
    'kode_kab'=>array(
         'name'=>'Kabupaten/Kota', 
         'value'=>master_kab::model()->FindByPk($model->kode_kab)->kabupaten, 
        ), 

而我运行它,该错误消息:提供的foreach无效的参数( )..

任何人都可以帮助我解决问题吗?感谢

+0

如果有一个问题,在foreach(),其中,为的foreach()的代码? – 2012-03-14 07:53:30

+0

只是猜测:当你在数据库中没有定义主键时,[yii bug#176](https://github.com/yiisoft/yii/issues/176)可能适用于你的情况。因为您发布的代码没有任何问题,所以在哪里可以给出答案并不是一个好问题。您还应该考虑使用[ActiveReord Relations](http://www.yiiframework.com/doc/guide/1.1/en/database.arr),而不是使用'findByPk()'获取每个模型。 – cebe 2012-03-14 11:55:10

+0

抱歉,迟到了我的回应..问题是加载模型与复合键。我在Yii论坛上接受过一些指导,但它仍然无效。在控制器被修改后,我把这段代码放到我的视图中。'array('class'=>'CButtonColumn','viewButtonUrl'=>'Yii :: app() - > controller-> createUrl(“view”, $ data-> primaryKey)', 'updateButtonUrl'=>'Yii :: app() - > controller-> createUrl(“update”,$ data-> primaryKey)', 'deleteButtonUrl'=>'Yii ::应用程序() - >控制器 - > createUrl(“删除”,$数据 - > PrimaryKey的)”,)' – syaloom 2012-03-16 02:35:46

回答

0

按照YII文档

CDetailView最出名的是在常规格式显示一个模型中使用的(例如,每个模型属性被显示为一个表中的行)。该模型可以是一个实例CModel或关联数组。 CDetailView使用属性属性来确定应显示哪些模型属性以及它们应如何格式化。

你在做什么是传递一个模型对象到每个属性和foreach失败。 做到以下它将工作;

在控制器中运行您的查询将结果返回为一个模型或关联数组(无论您更喜欢)。使用模型或关联数组作为参数传递,从您的控制器调用render view命令。 在你的视图中,将收到的参数作为数据源传递给CDetailView。

Read more about CDetailView in the Yii documentation.