teliasorg/yii2-autocomplete-ajax

通过简单的搜索模型属性模型ID。由 keygenqt/yii2-autocomplete-ajax 衍生

安装: 56

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 14

类型:yii2-extension

dev-master 2016-09-06 20:52 UTC

This package is not auto-updated.

Last update: 2024-09-23 12:23:37 UTC


README

这是 AutocompleteAjax 小部件,也是针对 Autocomplete | jQuery UI 的 Yii 2 增强包装。它是搜索模型属性模型ID的一种简单方式。

安装

推荐通过 composer 安装此扩展。

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

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

最新版本

该模块的最新版本为 v0.5.1 BETA

用法

视图

use teliasorg\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 文件。