我有一个关于yii2 kartik-v widget select 2的问题.
窗口小部件附加到我视图中的字段
<?= $form->field($model,'address')->widget(Select2::className(),[ 'options' => ['placeholder' => 'Inserta an address '],'pluginOptions' => [ 'allowClear' => true,'minimumInputLength' => 3,'ajax' => [ 'url' => Url::to(['register/addresses']),'dataType' => 'json','data' => new JsExpression('function(params) { return {q:params.term}; }') ],'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),'templateResult' => new JsExpression('function(address) { return address.name; }'),'templateSelection' => new JsExpression('function (address) { return address.name; }'),],'pluginEvents' => [ "select2:select" => "function(e) { // some function }",]); ?>
如果在我的控制器中我想将此值设置为此字段
喜欢:$model-> address =“Some Value”;在视图上该字段保持空白
我能做什么?
UPDATE!
正如文档所说我可以使用选项:’initValueText’如果我使用此插件的ajax版本.所以我试着设置’initValueText’=> $model->地址,但结果是一样的
解决方法
问题是这样的:
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
看来这个插件需要键’templateResult’和’templateSelection’的特定返回.
我已经使用address.text(而不是adress.name)修改了JsExpression返回值作为指导示例:Link.
然后我也修改了返回结果的PHP方法:
public function actionAddresses($q = NULL,$id = NULL) { Yii::$app->response->format = Response::FORMAT_JSON; $results = array(); if (!is_null($q)) { $geocoder = new GeocodingClient(); $request = $geocoder->lookup(['address' => $q]); $counter = 1; foreach ($request['results'] as $key => $value) { $results['results'][] = [ 'id' => $counter,'text' => $value['formatted_address'],// Instead of 'name' 'coordinate' => $value['geometry']['location'] ]; $counter++; } } return $results; }
我希望这可以帮助有类似问题的人.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。