buihoangvu/yii2-autocompleteajax
简单搜索属性模型的模型ID。
dev-master
2017-03-08 01:55 UTC
Requires
- php: >=5.4.0
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-18 19:59:30 UTC
README
这是AutocompleteAjax小部件,是Yii 2对Autocomplete | jQuery UI的增强包装。简单搜索属性模型的模型ID。
安装
通过composer安装此扩展是首选方式。
在您的composer.json
文件中添加以下内容:
"require": {
"keygenqt/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); } } }
Google Places API网络服务
<?= $form->field($model, 'address')->widget(\keygenqt\autocompleteAjax\AutocompleteAjax::classname(), [ 'startQuery' => false, 'url' => ['ajax/search-place'], 'options' => ['placeholder' => 'Find place.'], 'afterSelect' => 'function(event, ui) { var value = JSON.parse(ui.item.data); updateMarker(value.lat, value.lng); }' ]) ?>
/** * enable "Google Places API Web Service" in https://console.developers.google.com **/ public function actionSearchPlace($term, $apiKey = '') { $result = []; $results = []; if (Yii::$app->request->isAjax) { /** CURL QUERY **/ $curl = curl_init('https://maps.googleapis.com/maps/api/place/textsearch/json?key=' . urlencode($apiKey) . '&language=en&query=' . urlencode($term)); curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($curl); $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($status !== 200) { throw new NotFoundHttpException('Error: ' . curl_error($curl) . ' Code: ' . $status); } else { if (json_decode($response, true) && json_last_error() == JSON_ERROR_NONE) { $result = json_decode($response, true); } } curl_close($curl); /** CURL QUERY **/ if (!empty($result['results'])) { foreach($result['results'] as $model) { $results[] = [ 'id' => $model['formatted_address'], 'label' => $model['formatted_address'] . ' (model location: ' . json_encode($model['geometry']['location']) . ')', 'data' => json_encode($model['geometry']['location']), ]; } } echo Json::encode($results); } }
许可证
yii2-autocomplete-ajax根据BSD 3-Clause许可证发布。有关详细信息,请参阅打包的LICENSE.md
文件。