oleyur/yii2-autocomplete-ajax

以简单方式搜索属性模型的模型ID。

安装: 80

依赖: 0

建议者: 0

安全: 0

星级: 0

关注者: 2

分支: 14

类型:yii2-extension

dev-master / 1.0.x-dev 2016-08-30 07:47 UTC

This package is auto-updated.

Last update: 2024-09-17 18:51:48 UTC


README

这是AutocompleteAjax小部件,也是为Autocomplete | jQuery UI提供的Yii 2增强包装器。以简单方式搜索属性模型的模型ID。

安装

通过composer安装此扩展是首选方式。

在你的composer.json文件中添加以下内容:

"require": {
    "oleyur/yii2-autocomplete-ajax": "*"
}

最新版本

本模块的最新版本是v0.5.0 BETA

用法

视图

use keygenqt\autocompleteAjax\AutocompleteAjax;

// Normal select with ActiveForm & model
<?= $form->field($model, 'user_id')->widget(AutocompleteAjax::classname(), [
    'multiple' => false,
    'url' => ['ajax/search-user'],
    'options' => ['placeholder' => 'Find by user email or user id.']
]) ?>

控制器

class AjaxController extends Controller
{
    public function actionSearchUser($term)
    {
        if (Yii::$app->request->isAjax) {

            $results = [];

            if (is_numeric($term)) {
                /** @var Tag $model */
                $model = Tag::findOne(['id' => $term]);
                
                if ($model) {
                    $results[] = [
                        'id' => $model['id'],
                        'label' => $model['email'] . ' (model id: ' . $model['id'] . ')',
                    ];
                }
            } else {

                $q = addslashes($term);

                foreach(Tag::find()->where("(`email` like '%{$q}%')")->all() as $model) {
                    $results[] = [
                        'id' => $model['id'],
                        'label' => $model['email'] . ' (model id: ' . $model['id'] . ')',
                    ];
                }
            }

            echo Json::encode($results);
        }
    }
}

许可证

yii2-autocomplete-ajax在BSD 3-Clause许可证下发布。有关详细信息,请参阅捆绑的LICENSE.md