Редактируемая колонка Yii2 Kartik-v обновляет несколько ячеек таблицы

1

Я установил редактируемый столбец для GridView в Yii2 с расширением Kartik Editable. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти способ обновить несколько элементов таблицы из одного редактируемого столбца. То, что я сделал: столбец GridView

[
                    'class' => 'kartik\grid\EditableColumn',
                    'attribute'=>'post_title',
                    'editableOptions'=> function ($model, $key, $index) {

                            return [
                                'inputType' => \kartik\editable\Editable::INPUT_TEXT,
                                'size'=>'sm',
                                'afterInput'=>function ($form, $widget) use ($model, $index) {
                                    return $form->field($model, 'post_description')->textInput(['placeholder'=>'Enter post title']);
                                }
                            ];
                        }

                ],

Нажимая править столбец заголовка сообщения, он показывает поля редактирования для названия и описания

Действия PostsController

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

        if (Yii::$app->request->post('hasEditable')) {
            $postId = Yii::$app->request->post('editableKey');
            $model = Posts::findOne($postId);

            $out = Json::encode(['output'=>'', 'message'=>'']);

            $post = [];
            $posted = current($_POST['Posts']);
            $post['Posts'] = $posted;

            if ($model->load($post)) {
                $output = '';
                $out = Json::encode(['output'=>$output, 'message'=>'']);
                $model->save();
            }
            echo $out;
            return;
        }

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

Таким образом, когда я редактирую заголовок и описание публикации, только запись заголовка сохраняется в базе данных. Я думаю, это потому, что ток сохраняет только одно значение

$posted = current($_POST['Posts']);

Каким образом можно сохранить как $model-> post_title, так и $model-> post_description?

Теги:
yii2
gridview

1 ответ

0

Это редактируемый столбец Ajax. В то время на контроллер будет отправлено только одно значение.

Поэтому класс post_title и post_description должен быть доступен для редактирования в представлении.

Это должно работать каждый раз, когда вы редактируете эти столбцы.

Также измените это

if ($model->load($post)) {
    if (isset($model->post_title)){
        // here you can format the value of the attribute
          and display on the screen
             $output = $model->post_title;
    }
    if (isset($model->post_description)){
        $output = $model->post_description;
    } 
    $model->save();
    // Here you send a message that the value has been saved
    $out = Json::encode(['output'=>$output, 'message'=>'Saved']);                
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню