атрибут не сохраняется в $ model [kartik, select2 widget]

$url = \yii\helpers\Url::to(['/agitator/grs-data/personalnos']);
<?php
$grs = empty($model->personal_no) ? '' : GrsData::findOne($model->personal_no)->personal_no;

echo $form->field($model, 'personal_no')->widget(Select2::classname(), [
'initValueText' => $grs, // set the initial display text
'options' => ['placeholder' => 'Search for a voter ...'],
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 3,
'language' => [
'errorLoading' => new JsExpression("function () { return 'Waiting for results...'; }"),
],
'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(grs_data) { return grs_data.text; }'),
'templateSelection' => new JsExpression('function (grs_data) { return grs_data.text; }'),
],
]);
?>

Это виджет kartik select2. Я использую это для поиска личных данных из базы данных, и он показывает результаты в виде списка, из которого можно выбрать. Когда я выбираю и отправляю, атрибут ‘personal_no’ не сохраняется в $ model, он пуст.
Вот контроллер вида:

public function actionPersonalnos($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('id, personal_no AS text')
->from('grs_data')
->where(['like', 'personal_no', $q])
->limit(20);
$command = $query->createCommand();
$data = $command->queryAll();
$out['results'] = array_values($data);
}
elseif ($id > 0) {
$out['results'] = ['id' => $id, 'text' => GrsData::find($id)->personal_no];
}
return $out;
}

Все работает нормально, просто атрибут не сохраняется в модели, это проблема. Благодарю.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]