Моментальный поиск по бд

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
sham63
Сообщения: 62
Зарегистрирован: 2017.10.07, 17:38

Моментальный поиск по бд

Сообщение sham63 »

Нужно чтобы при начале ввода имени в строку , например Иванов.. выскакивали варианты возможных Ивановых которые есть в Бд.
Как это можно лучше реализовать или может плагины есть? посоветуйте пож :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Моментальный поиск по бд

Сообщение zelenin »

вам подсказать как select в базу составить?
проблему адекватно опишите.
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Моментальный поиск по бд

Сообщение SiZE »

elasticsearch
sham63
Сообщения: 62
Зарегистрирован: 2017.10.07, 17:38

Re: Моментальный поиск по бд

Сообщение sham63 »

Можно поподробнее?
Мне кажется это нужно реализовывать в ActiveForm
Пример: Форма создания дежурств. Первое текстовое поле - поле человека который будет дежурить. Начинаю вбивать Иванова , и мне тут же предлагают список всех ивановых , чтобы я выбрал конкретного.
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: Моментальный поиск по бд

Сообщение caHek2x »

select2 от krajee и там подгрузка по ajax ...
https://yadi.sk/d/wCDolqkn3PHwp6

вот как это во вьюшке у меня выглядит

Код: Выделить всё

<?=$form->field($search, 'executors')->widget(Select2::classname(), [
	'initValueText' => $search->getExecutorsLogin(),
	'options'       => [
		'placeholder' => 'Введите логин/фио/ид сотрудника ...',
		'multiple'    => true,
	],
	'pluginOptions' => [
		'allowClear'         => true,
		'minimumInputLength' => 1,
		'ajax'               => [
			'url'      => Url::toRoute(["/oper/select2-find"]),
			'dataType' => 'json',
			'data'     => new JsExpression('function(params) { return {q:params.term}; }'),
		],
		'escapeMarkup'       => new JsExpression('function (markup) { return markup; }'),
		'templateResult'     => new JsExpression('function(oper) { return oper.find; }'),
	],
	'maintainOrder' => true
]);?>
Ответить