0

我是 YII 的新手,我有一个问题......我有一个像

Person {
   $id ; 
   $name ; 
   $address ; 
}


Car{
   $id ;
   $carLicenseNumber ; 
   $person_id ; // BELONGS TO PERSON 
}

我有一个 CJuiAutoComplete 但我不知道如何在要更新时在字段上显示人名

$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
    'model'=>$model,
    'id'=>'person',
    'name'=>'person',

    'attribute'=> 'person->name', // I WANT THIS but no idea how to do this ... 

    'source'=>$this->createUrl('person/suggestPerson'),
    'options'=>array(
        'delay'=>150,
        'minLength'=>2,
        'showAnim'=>'fold',
        'select'=>"js:function(event, ui) {
            $('#label').val(ui.item.label);
            $('#temp_person_id').val(ui.item.id);
        }"
    ),
    'htmlOptions'=>array(
        'size'=>'40'
    ),
));

如何在属性上显示人员->姓名?

注意:$model 是 Car 实例

我尝试使用临时变量,例如

$temp = $model->person->name ; 然后将 $temp 分配给 'attribute'=>$temp 它工作得很好......

我只想知道如何在文本字段或自动完成字段上分配相关字段的正确方法。

4

1 回答 1

0

在我在 Live Chat 上与一些 YII 开发人员聊天后,我找到了解决方案

$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
    'model'=>$model->person, // change this to model->person instead of model
    'id'=>'person_name',
    'name'=>'person_name',

    'attribute'=> 'name', // just name

    'source'=>$this->createUrl('person/suggestPerson'),
    'options'=>array(
        'delay'=>150,
        'minLength'=>2,
        'showAnim'=>'fold',
        'select'=>"js:function(event, ui) {
            $('#label').val(ui.item.label);
            $('#temp_person_id').val(ui.item.id);
        }"
    ),
    'htmlOptions'=>array(
        'size'=>'40'
    ),
));
于 2012-09-06T05:58:11.997 回答