我有一个Gridview,在下拉列表中我决定使用ajax实现select2下拉列表,页面加载时间过长,实现ajax后性能提升了很多,并且ajax搜索工作正常。 我的问题是当我从列表中选择一个页面重新加载并从我选择的id获取数据时,但在过滤器标题中,它显示了id而不是显示名称。 下面的代码仅供用户使用,但组织和消息的列也有相同的问题。
查看/ index.php的
$formatJs = <<< 'JS'
var id_user = function (id_user) {
return id_user.id ? id_user.id : id_user.text;
}
JS;
$this->registerJs($formatJs, \yii\web\View::POS_HEAD);
...
[
'attribute' => 'id_user',
'label' => Yii::t("app", "User"),
'value' => function ($model) {
return Notification::findOne($model->id)->idUser->name;
},
'filterType' => GridView::FILTER_SELECT2,
'filterWidgetOptions' => ['options' => ['placeholder' => ''], 'pluginOptions' => ['allowClear' => true, 'minimumInputLength' => 3,
'ajax' => [
'url' => Url::to(['user-list']),
'dataType' => 'json',
'data' => new JsExpression('function(params){return{q:params.term};}'),
'cache' => true,
],
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
'templateSelection' => new JsExpression('id_user'),]
],
],
Controller.php这样
public function actionUserList($q = null, $id = null) {
Yii::$app->response->format = Response::FORMAT_JSON;
$out = ['results' => ['id' => '', 'text' => '']];
if (!is_null($q)) {
$query = new Query;
$query->select('id, name AS text')->from('tbl_user')->where(['like', 'name', $q])->limit(10);
$command = $query->createCommand();
$data = $command->queryAll();
$out['results'] = array_values($data);
} elseif ($id > 0) {
$out['results'] = ['id' => $id, 'text' => User::find($id)->name];
}
return $out;
}
答案 0 :(得分:0)
我知道答案还很晚,但是我自己遇到了这样的问题。也许该解决方案对某人有用。
为了显示值而不是标识符,您需要使用apiVersion: extensions/v1beta1
kind: Ingress
metadata:
# remove comment if tls is activated
# annotations:
# nginx.ingress.kubernetes.io/backend-protocol: HTTPS
# nginx.ingress.kubernetes.io/secure-backends: "true"
name: elastic-ingress
spec:
rules:
- host: elasticsearch.foo.bar
http:
paths:
- backend:
serviceName:
servicePort: 9200
path: /
tls:
- hosts:
- elasticsearch.foo.bar
secretName: tls
。
首先,我们需要从选定的标识符中获取用户。
initValueText
由于某种原因,我的过滤器格式略有不同,可能是版本不同或两个选项都起作用。我将从我的代码中举一个例子:
$filteredUserId = ArrayHelper::getValue(Yii::$app->getRequest()->getQueryParam('UserSearch'), 'user_id');
$filteredUser = $filteredUserId ? User::findOne($filteredUserId) : null;