Yii: настроить результаты CAutoComplete - PullRequest
0 голосов
/ 17 декабря 2009

Мне нужно сделать выпадающий список с помощью CAutoComplete. Все установлено и отлично работает, вот мой код действия:

<?php
    public function actionSuggestCharacter() {
        if(Yii::app()->request->isAjaxRequest && isset($_GET['q'])) {
            $name = $_GET['q']; 
            $criteria = new CDbCriteria;
            $criteria->condition='`Character` LIKE :keyword';
            $criteria->params=array(':keyword'=>"$name%");
            $criteria->limit = 5;
            $suggestions = zCharacter::model()->findAll($criteria);
            $returnVal = '';
            foreach($suggestions as $suggestion) {
                $returnVal .= $suggestion->Character."\n";
            }
            if (isset($suggestion)) {
                echo $returnVal;
            }
            $criteria->condition='`Character` LIKE :keyword';
            $criteria->params=array(':keyword'=>"%$name%");
            $criteria->limit = 5;
            $suggestions = zCharacter::model()->findAll($criteria);
            $returnVal = '';
            foreach($suggestions as $suggestion) {
                $returnVal .= $suggestion->Character."\n";
            }
            if (isset($suggestion)) {
                echo $returnVal;
            }
        }
    }
?>

Что делает этот код, так это то, что он показывает первые 5 совпадений с ключевым словом в начале, а следующие 5 совпадений с ключевым словом в любом месте.

Пример. Допустим, пользователь вводит в поле ввода «pdd» (не имеет значения, может быть любой текст), поэтому результаты, возвращаемые функцией автозаполнения, будут выглядеть так:

1. pddtext...
2. pddtext...
3. pdd_some_other_text
4. pdd_text
5. pdd_text
1. text_text_pdd
2. text_pdd_text
3. etc...

Проблема в том, что мне нужно разделить эти два блока какой-то линией (<hr> или <div> с границей). Как я могу это сделать?

Спасибо.

1 Ответ

2 голосов
/ 17 декабря 2009

Разве ты не можешь сделать что-то подобное?

<?php
    public function actionSuggestCharacter() {
        if(Yii::app()->request->isAjaxRequest && isset($_GET['q'])) {
            ...
            if (isset($suggestion)) {
                echo $returnVal;
            }
            echo "Hey this is the delimiter\n";
            $criteria->condition='`Character` LIKE :keyword';
            ....
        }
    }
?>

А затем на стороне клиента проверьте эту строку и, когда вы встретите "" Эй, это разделитель ", замените ее разделителем.

...