Yii CJuiAutoЗавершить данные из запроса Ajax - PullRequest
2 голосов
/ 10 августа 2011

У меня есть форма задачи для приложения, которое я создаю, который позволяет мне указать, какому контакту оно назначено. Я настроил зависимое выпадающее меню в Yii со следующим кодом:

echo $form->dropDownList($model,'associationType',
array('none'=>'None','contact'=>'Contact','sale'=>'Sale','account'=>'Account',
'project'=>'Project','case'=>'Case'),
                    array(
                        'ajax' => array(
                            'type'=>'POST', //request type
                            'url'=>CController::createUrl('tasks/parseType'), //url to call.
                            //Style: CController::createUrl('currentController/methodToCall')
                            'update'=>'#auto_complete', //selector to update
                            )
                    ));

То, что я пытаюсь сделать, - это использовать виджет CJuiAutoComplete с dropDown, указывающим, какой массив захватить. Таким образом, выпадающий список выбран для контактов, он должен получить список контактов и т. Д.

Вот что у меня есть для виджета CJui

$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
                'name'=>'auto_select',
                'source' => $names,
                'options'=>array(
                    'minLength'=>'2',
                    'select'=>'js:function( event, ui ) {
                        $("#'.CHtml::activeId($model,'associationId').'").val(ui.item.id);
                        return false;
                    }',
                ),
            ));

Переменная $ names пока только заполнитель, но в моем методе контроллера я передаю ей кодированный в JSON массив с id и именем. Код контроллера:

public function actionParseType() {
            //if(isset($_POST['TaskChild']['associationType'])){
                //$type=$_POST['TaskChild']['associationType'];
                $type='sale';
                $sql = 'SELECT id, name FROM x2_'.$type.'s';
                $cmd = Yii::app()->db->createCommand($sql);
                $res = $cmd->queryAll();

                echo CJSON::encode($res);

            //}
}

Прямо сейчас я заставляю его использовать «Sale», но я ничего не получаю, когда вызываю метод, и мне было интересно, как я могу исправить это. Я все еще немного новичок в Yii, так что я в основном читаю вики / сообщения на форуме о том, как это делается. Спасибо за любую помощь, спасибо!

1 Ответ

2 голосов
/ 10 августа 2011

Попробуйте что-то подобное в действии вашего контроллера:

    $sql = 'SELECT people_id as id, CONCAT(first_name," ",last_name) as value, first_name as label FROM people WHERE first_name LIKE :qterm ORDER BY first_name ASC';
    $command = Yii::app()->db->createCommand($sql);
    $qterm = $_GET['term'].'%';
    $command->bindParam(":qterm", $qterm, PDO::PARAM_STR);
    $result = $command->queryAll();
    echo CJSON::encode($result); exit;

Затем вы можете проверить это, используя это в массиве параметров вашего виджета: 'select'=>'js:function(event, ui) { console.log(ui.item.id +":"+ui.item.value); }'

...