yii2 Kartik: редактируемый (Multi-) Select2 в GridView не показывает загруженные данные

Я попытался настроить Kartik Gridview с помощью редактируемых столбцов. Один столбец имеет тип INPUT_SELECT2,

В представлении у меня есть следующее определение:

$gridColumns = [
[
'class'=>'kartik\grid\EditableColumn',
'attribute'=>'occupation_ids',
'value' => 'occuList',
'editableOptions'=>[
'header'=>'Occupations',
'inputType'=>Editable::INPUT_SELECT2,
'options' => [
'attribute'=>'occupations',
'data' => ArrayHelper::map(Occupation::find()->all(), 'id', 'description'),
'options' => [
'multiple' => true,
],
'pluginOptions' => [
'tags' => true,
],
],
'asPopover' => false,
],
],
...];

echo GridView::widget([
'dataProvider'=>$dataProvider,
'columns'=>$gridColumns,
'filterModel' => $searchModel,
]);

Сохранение значений работает отлично. Но если речь идет о загрузке и отображении сохраненных данных, мне пришлось потрудиться, чтобы все заработало.
GridView содержит список MonthlyEmployment, MonthlyEmployment имеет следующий метод

 * @property Occupation[] $occupations
*/
class MonthlyEmployment extends \yii\db\ActiveRecord
{
public $occupation_ids;

public function getOccuList() {
$arr = [];
foreach ($this->occupations as $ocu) {
$arr[] = $ocu->description;
}
if ($arr != null && !empty($arr)) {
return implode(', ', $arr);
} else {
return '';
}
}

Таким образом, сохраненные занятия отображаются в виде сетки. Но если я открою модуль для редактирования поля, значения не будут выбраны. Изображение ниже, чтобы увидеть, что я имею в виду.

Редактируемый столбец GridView (Multi) Select2

Так есть ли у кого-нибудь рабочий пример с Kartik GridView, Editable и Select2?

0

Решение

иметь один без тегов;
это контроллер:

public function actionIndex()
{
$model = new Model;
$searchModel = new OrderSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);

if (isset($_POST['hasEditable'])) {
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

if ($model->load($_POST)) {
$value = $model->status;
return ['output'=>$value, 'message'=>''];
}
else {
return ['output'=>'', 'message'=>''];
}
}

return $this->render('indextoday', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}

и это столбец:

<?php $data_from_desiredModel=ArrayHelper::map(desiredModel::find()
->orderBy('id')->asArray()->all(), 'id', 'name');?>

[
'class'=>'kartik\grid\EditableColumn',
'attribute'=>'name',
'editableOptions'=>[
'header'=>'Name',
'inputType'=>\kartik\editable\Editable::INPUT_SELECT2,
'data' => $data_from_desiredModel,
],
],
0

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

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

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