Подключение AutoComplete в Yii 2.0

AutoComplete — класс для автозаполнения строки ввода. К примеру вы захотели сделать на своем сайте функцию помогающую заполнять поле город. При вводе начальных символов всплывает подсказка со списком городов имеющих в названиях введенные вами символы. Для использования класса AutoComplete в Yii 2.0 нам необходимо его подключить к своему шаблону. Как правило подключения классов в yii 2.0 осуществляется верхней части шаблона

Для использования jui подключите его к фреймворку
"yiisoft/yii2-jui": "^2.0"  

Вставьте в composer.json file и потом update composer( используйте код

php composer.phar update

)

<?
use yii\jui\AutoComplete;// Указываете путь до библиотеки
?>

Так же надо будет указать путь до модели откуда будут браться данные. В моем случае эта модель Goroda

<?
use app\models\Goroda;
?>

После подключения модели нужно сформировать список и передать виджету AutoComplete

<?
//формируем список
$listdata=Goroda::find()->select(['id as value', 'name as label'])->asArray()->all();
?>
<?
//Передаем список виджету AutoComplete
?>
<?= $form->field($model,'otkuda')->widget(AutoComplete::className(), ['clientOptions'=> ['source'=> $listdata,],'options'=>['class'=>'form-control'        ]]);?>

Рассмотрим еще один пример в котором у Вас есть таблица с именем family и она содержит идентификатор и имя файлов. В форме, которую вы хотите, чтобы имена разных семейств были автоматически заполнены.

<?php

use yii\jui\AutoComplete;
use yii\web\JsExpression;


$data = Family::find()
        ->select(['name as value', 'name as  label','id as id'])
        ->asArray()
        ->all();

        echo 'Family Name' .'<br>';
	echo AutoComplete::widget([    
	'clientOptions' => [
	'source' => $data,
	'minLength'=>'3', 
	'autoFill'=>true,
	'select' => new JsExpression("function( event, ui ) {
			        $('#memberssearch-family_name_id').val(ui.item.id);//#memberssearch-family_name_id is the id of hiddenInput.
			     }")],
			     ]);
		    ?>

Leave a Comment