Select2 和 Ajax 加载、搜索但我无法在 Yii2 框架中选择结果
Select2 and Ajax loading, search but I can't choose result in Yii2 framework
我正在使用:Select2 和 Ajax 从教程中加载:http://demos.krajee.com/widget-details/select2#usage-ajax。
我有问题,脚本可以运行,但我无法选择值。我可以搜索,但我想从结果中进行选择。我点击了一个但没有任何反应,值没有输入。
表格:
<?= $form->field($model, 'top_surname_surname_id')->widget(Select2::classname(), [
'initValueText' => $cityDesc, // set the initial display text
'options' => ['placeholder' => 'Wpisz nazwisko'],
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 3,
'ajax' => [
'url' => $url,
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {q:params.term}; }')
],
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
'templateResult' => new JsExpression('function(top_surname_surname_id) { return top_surname_surname_id.text; }'),
'templateSelection' => new JsExpression('function (top_surname_surname_id) { return top_surname_surname_id.text; }'),
],
]);?>
控制器:
public function actionSurnamelist($q = null, $id = null) {
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$out = ['results' => ['id' => '', 'text' => '']];
if (!is_null($q)) {
$query = new Query;
$query->select('surname_id, surname_name AS text')
->from('surname')
->where(['like', 'surname_name', $q])
->limit(20);
$command = $query->createCommand();
$data = $command->queryAll();
$out['results'] = array_values($data);
}
elseif ($id > 0) {
$out['results'] = ['id' => $id, 'text' => Surname::find($id)->surname_name];
}
return $out;
}
问题出在这一行:
$query->select('surname_id, surname_name AS text')
->from('surname')
->where(['like', 'surname_name', $q])
->limit(20);
工作然后我将代码编辑为:
$query->select('surname_id AS id, surname_name AS text')
->from('surname')
->where(['like', 'surname_name', $q])
->limit(20);
如果我理解你 correctly.your 结果应该是这样的
$out['results'] = [
'id' => your_id,
'text' => some text,
];
但是如果你看到你的 if 条件,你选择的 surname_id
与 id
不同,所以要么使用别名,要么使用 foreach 循环到你的 $data
例如
foreach($data as $key=>$value){
$out['results'] = [
'id' => $value->surname_id,
'text' => $value->text,
];
}
希望对您有所帮助。
问题是重定向 select 到字段的 ID。
我正在使用:Select2 和 Ajax 从教程中加载:http://demos.krajee.com/widget-details/select2#usage-ajax。
我有问题,脚本可以运行,但我无法选择值。我可以搜索,但我想从结果中进行选择。我点击了一个但没有任何反应,值没有输入。
表格:
<?= $form->field($model, 'top_surname_surname_id')->widget(Select2::classname(), [
'initValueText' => $cityDesc, // set the initial display text
'options' => ['placeholder' => 'Wpisz nazwisko'],
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 3,
'ajax' => [
'url' => $url,
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {q:params.term}; }')
],
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
'templateResult' => new JsExpression('function(top_surname_surname_id) { return top_surname_surname_id.text; }'),
'templateSelection' => new JsExpression('function (top_surname_surname_id) { return top_surname_surname_id.text; }'),
],
]);?>
控制器:
public function actionSurnamelist($q = null, $id = null) {
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$out = ['results' => ['id' => '', 'text' => '']];
if (!is_null($q)) {
$query = new Query;
$query->select('surname_id, surname_name AS text')
->from('surname')
->where(['like', 'surname_name', $q])
->limit(20);
$command = $query->createCommand();
$data = $command->queryAll();
$out['results'] = array_values($data);
}
elseif ($id > 0) {
$out['results'] = ['id' => $id, 'text' => Surname::find($id)->surname_name];
}
return $out;
}
问题出在这一行:
$query->select('surname_id, surname_name AS text')
->from('surname')
->where(['like', 'surname_name', $q])
->limit(20);
工作然后我将代码编辑为:
$query->select('surname_id AS id, surname_name AS text')
->from('surname')
->where(['like', 'surname_name', $q])
->limit(20);
如果我理解你 correctly.your 结果应该是这样的
$out['results'] = [
'id' => your_id,
'text' => some text,
];
但是如果你看到你的 if 条件,你选择的 surname_id
与 id
不同,所以要么使用别名,要么使用 foreach 循环到你的 $data
例如
foreach($data as $key=>$value){
$out['results'] = [
'id' => $value->surname_id,
'text' => $value->text,
];
}
希望对您有所帮助。
问题是重定向 select 到字段的 ID。