Spec-Zone.ru › Yii 1.1

CAutoComplete

Пакет system.web.widgets
Наследование класс CAutoComplete » CInputWidget » CWidget » CBaseController » CComponent
С момента 1.0
Исходный код framework/web/widgets/CAutoComplete.php
CAutoComplete генерирует поле автозаполнения текста.

CAutoComplete основан на jQuery Autocomplete.

Этот класс устарел начиная с Yii 1.1.3. Рассмотрите использование CJuiAutoComplete. Существует хорошее руководство по миграции от автора обоих JavaScript-решений.

Общедоступные свойства

Свойство Тип Описание Определено
actionPrefix строка префикс к идентификаторам действий. CWidget
attribute строка атрибут, связанный с этим виджетом. CInputWidget
autoFill логическое значение заполнить текстовое поле во время выбора значения, заменить значение, если введено больше текста или выбрано другое значение. CAutoComplete
cacheLength целое число количество результатов запроса сервера для хранения в кэше. CAutoComplete
controller CController Возвращает контроллер, к которому принадлежит этот виджет. CWidget
cssFile смешанный тип файл CSS, используемый для виджета. CAutoComplete
data массив данные, которые будут сохранены в качестве данных на стороне клиента для предоставления кандидатов для выбора. CAutoComplete
delay целое число задержка в миллисекундах, в течение которой автозаполняющий механизм ожидает после нажатия клавиши, чтобы активировать себя. CAutoComplete
extraParams массив дополнительные параметры для сервера. CAutoComplete
formatItem строка функция javascript, обеспечивающая расширенную разметку элемента. CAutoComplete
formatMatch строка функция javascript, которая может использоваться для ограничения данных, по которым автозаполнение ищет совпадения. CAutoComplete
formatResult строка функция javascript, которая обеспечивает форматирование значения, которое будет помещено в поле ввода. CAutoComplete
highlight логическое значение|строка Выделять ли и как совпадения в выпадающем списке. CAutoComplete
htmlOptions массив дополнительные параметры HTML для отображения в теге input. CInputWidget
id строка Возвращает идентификатор виджета или генерирует новый, если запрошено. CWidget
inputClass строка класс CSS для элемента input. CAutoComplete
loadingClass строка класс CSS, используемый при загрузке данных с сервера. CAutoComplete
matchCase логическое значение является ли сравнение чувствительным к регистру. CAutoComplete
matchContains логическое значение ищет ли сравнение внутри (т.е. "ba" совпадает с "foo bar") результатов поиска. CAutoComplete
matchSubset логическое значение может ли автозаполнение использовать кэш для более конкретных запросов. CAutoComplete
max целое число ограничить количество элементов в выпадающем списке. CAutoComplete
methodChain строка цепь вызовов методов, которые будут добавлены в конец конструктора автозаполнения. CAutoComplete
minChars целое число минимальное количество символов, которое пользователь должен ввести, прежде чем автозаполнение активируется. CAutoComplete
model CModel модель данных, связанная с этим виджетом. CInputWidget
multiple логическое значение разрешить ввод более одного значения автозаполнения. CAutoComplete
multipleSeparator строка разделитель между значениями при использовании параметра multiple. CAutoComplete
mustMatch логическое значение если установлено в значение true, автозаполнение будет допускать только результаты, представленные сервером. CAutoComplete
name строка имя поля ввода. CInputWidget
options массив дополнительные параметры, которые можно передать в конструктор объекта js autocomplete. CAutoComplete
owner CBaseController Возвращает владельца/создателя этого виджета. CWidget
resultsClass строка класс CSS для выпадающего списка. CAutoComplete
scroll логическое значение прокручивать ли содержимое, если результатов больше, чем указано в scrollHeight. CAutoComplete
scrollHeight целое число высота прокручиваемого элемента автозаполнения в пикселях. CAutoComplete
selectFirst логическое значение если это значение true, первое значение автозаполнения будет автоматически выбрано при нажатии клавиши Tab/Enter, даже если его не выбирали вручную с помощью клавиатуры или мыши. CAutoComplete
skin смешанный тип имя используемой темы. CWidget
textArea логическое значение отображать ли автозаполнение с помощью текстового поля. CAutoComplete
url строка|массив URL, который может возвращать кандидатов для выбора. CAutoComplete
value строка значение поля ввода CInputWidget
viewPath строка Возвращает директорию с файлами представления для этого виджета. CWidget
width целое число указать пользовательскую ширину выпадающего списка. CAutoComplete

Защищённые свойства

Свойство Тип Описание Определено
clientOptions массив параметры javascript CAutoComplete

Публичные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__construct() Конструктор. CWidget
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства нулевым. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в значение null. CComponent
actions() Возвращает список действий, используемых этим виджетом. CWidget
asa() Возвращает объект поведения с заданным именем. CComponent
attachBehavior() Прикрепляет поведение к этому компоненту. CComponent
attachBehaviors() Прикрепляет список поведений к компоненту. CComponent
attachEventHandler() Прикрепляет обработчик события к событию. CComponent
beginCache() Начинает кэширование фрагмента. CBaseController
beginClip() Начинает запись клипа. CBaseController
beginContent() Начинает отображение содержимого, которое должно быть оформлено указанным представлением. CBaseController
beginWidget() Создаёт виджет и выполняет его. CBaseController
canGetProperty() Определяет, можно ли прочитать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
createWidget() Создаёт виджет и инициализирует его. CBaseController
detachBehavior() Открепляет поведение от компонента. CComponent
detachBehaviors() Открепляет все поведения от компонента. CComponent
detachEventHandler() Открепляет существующий обработчик события. CComponent
disableBehavior() Отключает прикрепленное поведение. CComponent
disableBehaviors() Отключает все прикреплённые поведения к этому компоненту. CComponent
enableBehavior() Включает прикреплённое поведение. CComponent
enableBehaviors() Включает все прикреплённые поведения к этому компоненту. CComponent
endCache() Заканчивает кэширование фрагмента. CBaseController
endClip() Заканчивает запись клипа. CBaseController
endContent() Заканчивает отображение содержимого. CBaseController
endWidget() Заканчивает выполнение указанного виджета. CBaseController
evaluateExpression() Вычисляет PHP-выражение или обратный вызов в контексте этого компонента. CComponent
getController() Возвращает контроллер, к которому принадлежит этот виджет. CWidget
getEventHandlers() Возвращает список прикреплённых обработчиков событий для события. CComponent
getId() Возвращает идентификатор виджета или генерирует новый, если запрошено. CWidget
getOwner() Возвращает владельца/создателя этого виджета. CWidget
getViewFile() Ищет файл скрипта представления по имени представления. CWidget
getViewPath() Возвращает директорию, содержащую файлы представлений для этого виджета. CWidget
hasEvent() Определяет, задано ли событие. CComponent
hasEventHandler() Проверяет, есть ли прикреплённые обработчики для указанного события. CComponent
hasProperty() Определяет, задано ли свойство. CComponent
init() Инициализирует виджет. CAutoComplete
raiseEvent() Вызывает событие. CComponent
registerClientScript() Регистрирует необходимые CSS и JavaScript. CAutoComplete
registerCssFile() Регистрирует необходимый файл CSS. CAutoComplete
render() Отображает представление. CWidget
renderFile() Отображает файл представления. CBaseController
renderInternal() Отображает файл представления. CBaseController
run() Выполняет виджет. CWidget
setId() Устанавливает идентификатор виджета. CWidget
widget() Создаёт виджет и выполняет его. CBaseController

Защищённые методы

Метод Описание Определено в
getClientOptions() Возвращает javascript параметры. CAutoComplete
hasModel() Определяет, связан ли этот виджет с моделью данных. CInputWidget
resolveNameID() CInputWidget

Подробное описание свойств

autoFill свойство

public boolean $autoFill;

Заполняет текстовое поле, пока ещё выбирается значение, заменяя значение, если набрано больше символов или выбрано что-то другое. По умолчанию false.

cacheLength свойство

public integer $cacheLength;

количество результатов запроса к бэкенду для хранения в кэше. Если установлено в 1 (текущий результат), кэширование не произойдёт. Должно быть >= 1. По умолчанию 10.

clientOptions свойство только для чтения

protected array getClientOptions()

опции javascript

свойство cssFile

public mixed $cssFile;

Файл CSS, используемый для виджета. По умолчанию null, что означает использование файла по умолчанию, включённого вместе с виджетом. Если false, файл CSS не будет использован. В противном случае, указанный файл CSS будет включён при использовании этого виджета.

свойство data

public array $data;

данные, которые будут сохранены как данные на стороне клиента для предоставления кандидатов. Каждый элемент массива может быть строкой или ассоциативным массивом. Свойство url будет проигнорировано, если установлено это свойство.

См. также

  • url

свойство delay

public integer $delay;

задержка в миллисекундах, которую автодополнение ждёт после нажатия клавиши, чтобы активировать себя. По умолчанию 400.

свойство extraParams

public array $extraParams;

дополнительные параметры для бэкенда. Если вы укажете массив ('bar'=>4), автодополнение будет вызывать бэкенд с параметром GET 'bar' со значением 4. Параметр может быть функцией, которая вызывается для расчёта параметра перед каждым запросом.

свойство formatItem

public string $formatItem;

функция javascript, которая предоставляет расширенный разметку для элемента. Для каждой строки результатов будет вызвана эта функция. Возвращаемое значение будет отображено внутри элемента LI в списке результатов. Автодополнение предоставит 4 параметра: строка результатов, позиция строки в списке результатов (начиная с 1), количество элементов в списке результатов и поисковый запрос. По умолчанию предполагается, что одна строка содержит одно значение.

свойство formatMatch

public string $formatMatch;

функция javascript, которая может использоваться для ограничения данных, по которым автодополнение ищет совпадения. Например, могут быть элементы, которые вы хотите отобразить пользователю, но не хотите включать в данные, которые ищутся. Функция вызывается с теми же аргументами, что и formatItem. По умолчанию formatItem.

свойство formatResult

public string $formatResult;

функция javascript, которая обеспечивает форматирование значения, которое должно быть помещено в поле ввода. Опять же, три аргумента: данные, позиция (начиная с единицы) и общее количество данных. По умолчанию предполагается либо использование простых данных в качестве результата, либо использование того же значения, что и предоставляется formatItem.

свойство highlight

public boolean|string $highlight;

Включает ли и как подсвечивать совпадения в раскрывающемся списке. Установите в false, чтобы отключить. Установите в функцию javascript для настройки. Функция получает значение в качестве первого аргумента и поисковый запрос во втором и должна вернуть отформатированное значение. По умолчанию, обрамляет поисковый запрос в тег <strong>.

свойство inputClass

public string $inputClass;

класс CSS для элемента ввода. По умолчанию "ac_input".

свойство loadingClass

public string $loadingClass;

класс CSS, используемый при загрузке данных с бэкенда. По умолчанию "ac_loading".

свойство matchCase

public boolean $matchCase;

чувствителен ли поиск к регистру. Важно только если используется кэширование. По умолчанию false.

свойство matchContains

public boolean $matchContains;

ищет ли сравнение внутри (например, "ba" совпадает с "foo bar") результатов поиска. Важно только если используется кэширование. Не смешивайте с автозаполнением. По умолчанию false.

свойство matchSubset

public boolean $matchSubset;

может ли автодополнение использовать кэш для более конкретных запросов. Это означает, что все совпадения "foot" являются подмножеством всех совпадений для "foo". Обычно это верно, и использование этого параметра уменьшает нагрузку на сервер и повышает производительность. Полезно только с настройками cacheLength больше единицы, например 10. По умолчанию true.

свойство max

public integer $max;

ограничивает количество элементов в раскрывающемся списке. Также отправляется как параметр "limit" с удалённым запросом. По умолчанию 10.

свойство methodChain

public string $methodChain;

цепь вызовов методов, которые будут добавлены в конце конструктора автодополнения. Например, ".result(function(...){})" заставит указанную js-функцию быть выполненной, когда пользователь выбирает вариант.

свойство minChars

public integer $minChars;

минимальное количество символов, которые пользователь должен ввести, прежде чем автодополнение активируется. По умолчанию 1.

свойство multiple

public boolean $multiple;

разрешает ли ввод нескольких значений автодополнения. По умолчанию false.

свойство multipleSeparator

public string $multipleSeparator;

разделитель между значениями при использовании нескольких вариантов. По умолчанию ", ".

свойство mustMatch

public boolean $mustMatch;

если установлено в true, автодополнение будет разрешать только результаты, представленные бэкендом. Обратите внимание, что недопустимые значения приводят к пустому полю ввода. По умолчанию false.

свойство options

public array $options;

дополнительные параметры, которые могут быть переданы в конструктор объекта js autocomplete. Это позволяет переопределить существующие функции класса autocomplete js (например, функцию parse()).

Если вы хотите предоставить код на чистом JavaScript, вам нужно обернуть строку с помощью CJavaScriptExpression, иначе она будет заключена в кавычки.

свойство resultsClass

public string $resultsClass;

класс CSS для списка выпадающего списка. По умолчанию "ac_results".

свойство scroll

public boolean $scroll;

прокручивать ли при наличии больше результатов, чем настроено через scrollHeight. По умолчанию true.

свойство scrollHeight

public integer $scrollHeight;

высота прокручиваемого элемента автодополнения в пикселях. По умолчанию 180.

свойство selectFirst

public boolean $selectFirst;

если установлено в true, первое значение автодополнения будет автоматически выбрано при нажатии Tab/Return, даже если оно не было выбрано вручную с помощью клавиатуры или мыши. Если есть результат, выбранный вручную (подсвеченный), этот результат будет иметь приоритет. По умолчанию true.

свойство textArea

public boolean $textArea;

отображать ли автодополнение с помощью текстовой области. По умолчанию false, что означает использование текстового поля.

свойство url

public string|array $url;

URL, который может вернуть кандидатов. Параметр GET 'q' будет отправлен вместе с URL, который содержит то, что пользователь ввёл до сих пор. Если URL задан как массив, он рассматривается как маршрут к действию контроллера и будет использован для генерации URL с помощью CController::createUrl; если URL — пустая строка, используется текущий запрашиваемый URL. Это свойство будет проигнорировано, если установлено свойство data.

См. также

  • data

свойство width

public integer $width;

указать пользовательскую ширину раскрывающегося списка. По умолчанию ширина элемента ввода.

Подробное описание методов

метод getClientOptions()

protected array getClientOptions()
{return} array опции javascript
Исходный код: framework/web/widgets/CAutoComplete.php#265 (показать)
protected function getClientOptions()
{
    static 
$properties=array(
        
'minChars', 'delay', 'cacheLength', 'matchSubset',
        
'matchCase', 'matchContains', 'mustMatch', 'selectFirst',
        
'extraParams', 'multiple', 'multipleSeparator', 'width',
        
'autoFill', 'max', 'scroll', 'scrollHeight', 'inputClass',
        
'resultsClass', 'loadingClass');
    static 
$functions=array('formatItem', 'formatMatch', 'formatResult', 'highlight');

    
$options=$this->options;
    foreach(
$properties as $property)
    {
        if(
$this->$property!==null)
            
$options[$property]=$this->$property;
    }
    foreach(
$functions as $func)
    {
        if(
$this->$func!==null)
        {
            if(
$this->$func instanceof CJavaScriptExpression)
                
$options[$func]=$this->$func;
            else
                
$options[$func]=new CJavaScriptExpression($this->$func);
        }
    }

    return 
$options;
}

метод init()

public void init()
Исходный код: framework/web/widgets/CAutoComplete.php#201 (показать)
public function init()
{
    list(
$name,$id)=$this->resolveNameID();
    if(isset(
$this->htmlOptions['id']))
        
$id=$this->htmlOptions['id'];
    else
        
$this->htmlOptions['id']=$id;
    if(isset(
$this->htmlOptions['name']))
        
$name=$this->htmlOptions['name'];

    
$this->registerClientScript();

    if(
$this->hasModel())
    {
        
$field=$this->textArea ? 'activeTextArea' : 'activeTextField';
        echo 
CHtml::$field($this->model,$this->attribute,$this->htmlOptions);
    }
    else
    {
        
$field=$this->textArea ? 'textArea' : 'textField';
        echo 
CHtml::$field($name,$this->value,$this->htmlOptions);
    }
}

Инициализирует виджет. Этот метод регистрирует все необходимые клиентские скрипты и отображает элемент ввода автодополнения.

метод registerClientScript()

public void registerClientScript()
Исходный код: framework/web/widgets/CAutoComplete.php#228 (показать)
public function registerClientScript()
{
    
$id=$this->htmlOptions['id'];

    
$acOptions=$this->getClientOptions();
    
$options=$acOptions===array()?'{}' : CJavaScript::encode($acOptions);

    
$cs=Yii::app()->getClientScript();
    
$cs->registerCoreScript('autocomplete');
    if(
$this->data!==null)
        
$data=CJavaScript::encode($this->data);
    else
    {
        
$url=CHtml::normalizeUrl($this->url);
        
$data='"'.$url.'"';
    }
    
$cs->registerScript('Yii.CAutoComplete#'.$id,"jQuery(\"#{$id}\").legacyautocomplete($data,{$options}){$this->methodChain};");

    if(
$this->cssFile!==false)
        
self::registerCssFile($this->cssFile);
}

Регистрирует необходимые CSS и JavaScript.

метод registerCssFile()

public static void registerCssFile(string $url=NULL)
$url строка URL CSS. Если null, будет использован URL по умолчанию.
Исходный код: framework/web/widgets/CAutoComplete.php#254 (показать)
public static function registerCssFile($url=null)
{
    
$cs=Yii::app()->getClientScript();
    if(
$url===null)
        
$url=$cs->getCoreScriptUrl().'/autocomplete/jquery.autocomplete.css';
    
$cs->registerCssFile($url);
}

Регистрирует необходимый файл CSS.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CAutoComplete

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API