Yii CJuiAutoComplete值未显示

时间:2012-12-27 17:37:14

标签: autocomplete yii widget yii-extensions

如果这已经存在,我道歉但我无法让它发挥作用.. 我需要显示名称并将id存储在我的表中。这些名称来自其他型号(表)。当我在镀铬网络检查员检查elts时,我得到了名字和id。 但是值不是不可见的..但是当我试图点击它们时它们正在填充它带有id的警报......

任何人都可以帮助我看到名字 - 谢谢你的帮助

我的_form.php是这样的:

     <div class="row">
        <?php echo $form->labelEx($typeModel,'benefit_type'); ?>
        <?php
    $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
    'attribute'=>'name',
    'model'=>$typeModel,
    'sourceUrl'=>array('benefit/benefit_type_list'),
    'value'=>'Please select',
    'name'=>'name',
    'id'=>'id',
    'options'=>array(
        'minLength'=>'0',
         'select'=>"js:function(event, ui) {
     alert(ui.item.id);
                                        // $('#organisation_id').val(ui.item.id);
                                        }",
    ),
    'htmlOptions'=>array(
'id'=>'id',
    'size'=>45,
    'maxlength'=>45,
    ),
    )); ?>

    <?php echo $form->error($typeModel,'benefit_type'); ?>

获取名称和ID的扩展类是:

   <? class EAutoCompleteAction extends CAction
    {
        public $model;
        public $attribute;
        public $id;
        private $results = array();
        public $returnVal = '';
        public function run()
        {
            if(isset($this->model) && isset($this->attribute)) {
                $criteria = new CDbCriteria();
                $criteria->compare($this->attribute, $_GET['term'], true);
                $model = new $this->model;
                foreach($model->findAll($criteria) as $m)
                {
                   // $this->results[] = $m->{$this->attribute};
                    //$this->results[] = $m-<{$this->id};
                    $this->results[] = array(
                        'name' => $m->{$this->attribute},
                            'id'=> $m->id
                    );



                    /* $this->returnVal .= $m->getAttribute('name').'|'
                    .$m->getAttribute('id'). "\n"; */
                }

            }

            echo CJSON::encode($this->results);
        }
    }
    ?>

并在我的控制器中:

public function actions()
    {
        return array(
                'benefit_type_list'=>array(
                        'class'=>'application.extensions.EAutoCompleteAction',
                        'model'=>'BenefitType', //My model's class name
                        'attribute'=>'name', //The attribute of the model i will search
                ),
        );

    }

1 个答案:

答案 0 :(得分:1)

我使用此扩展程序已经有一段时间了,但它使用了Jquery的自动完成功能,EAutoCompleteAction的数据集可能需要:

                $this->results[] = array(
                    'label' => $m->{$this->attribute},
                    'value'=> $m->id,
                    'id'=> $m->id
                );

来源:yii forums