CAutoComplete
| Пакет | system.web.widgets |
|---|---|
| Наследование | класс CAutoComplete » CInputWidget » CWidget » CBaseController » CComponent |
| С момента | 1.0 |
| Исходный код | framework/web/widgets/CAutoComplete.php |
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 будет проигнорировано, если установлено это свойство.
См. также
свойство 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.
См. также
свойство width
public integer $width;
указать пользовательскую ширину раскрывающегося списка. По умолчанию ширина элемента ввода.
Подробное описание методов
метод getClientOptions()
protected array getClientOptions() | ||
| {return} | array | опции javascript |
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() |
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() |
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 по умолчанию. |
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