Autocomplete Ajax
Autocomplete Ajax
This is the AutocompleteAjax widget and a Yii 2 enhanced wrapper for the Autocomplete
| jQuery UI. A simple way to search model id of the attributes model.
Installation
"require": {
"keygenqt/yii2-autocomplete-ajax": "*"
}
of your composer.json file.
Example form
Example form code
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'autocomplete')->widget(AutocompleteAjax::class, [
'url' => ['ajax/search'],
'options' => ['placeholder' => 'Find by user email or user id.']
]) ?>
<?= $form->field($model, 'integer')->textInput()->input('text', ['placeholder' => 'Integer']) ?>
<?= $form->field($model, 'email')->textInput()->input('email', ['placeholder' => 'Email']) ?>
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
<?php ActiveForm::end(); ?>
Example AjaxController
class AjaxController extends FrontendController
{
public function actionSearch($term)
{
if (Yii::$app->request->isAjax) {
sleep(2); // for test
$results = [];
if (is_numeric($term)) {
/** @var Test $model */
$model = Test::findOne(['id' => $term]);
if ($model) {
$results[] = [
'id' => $model['id'],
'label' => $model['email'] . ' (model id: ' . $model['id'] . ')',
];
}
} else {
$q = addslashes($term);
foreach (Test::find()->where("(`email` like '%{$q}%')")->all() as $model) {
$results[] = [
'id' => $model['id'],
'label' => $model['email'] . ' (model id: ' . $model['id'] . ')',
];
}
}
echo Json::encode($results);
}
}
}
License
May 26, 2020