Значения Yii CJuiAutoComplete не отображаются

Прошу прощения, если это уже существует, но я не смог заставить его работать. Мне нужно показать имена и сохранить идентификаторы в моей таблице. это имя взято из другой модели (таблицы). я получаю имена и идентификаторы, когда я проверяю elts в Chrome Network Investor.. но значения не видны.. но они заполняются, когда я пытаюсь щелкнуть по ним, это появляется в предупреждении с идентификатором..

может ли кто-нибудь помочь мне отобразить имена -- спасибо за вашу помощь

мой _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'); ?>

класс расширения для получения имен и идентификаторов:

   <? 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
                ),
        );

    }

person Developer    schedule 27.12.2012    source источник


Ответы (1)


Прошло некоторое время с тех пор, как я использовал это расширение, но оно использует автозаполнение Jquery, и набор данных из EAutoCompleteAction, вероятно, нуждается:

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

Источник: форумы yii

person DarkMukke    schedule 10.01.2013
comment
спасибо за ответ темный мукке. но это не проблема с получением значений из массива результатов. его проблема с Cjuiautocomplete. здесь нужно что-то исправить - person Developer; 14.01.2013