首页 > 解决方案 > PJAX 后 YII2 可编辑列不起作用

问题描述

gridview 中集成了 EditableColumn 的列,在每个页面加载时都可以正常工作,但在执行任何 PJAX 调用(如搜索、分页更改等)之后就不行了。

在查看 EditableColumn 代码如下所示:

[
    'class' => EditableColumn::class,
    'attribute' => 'visit_status',
    'url' => ['update'],
    'type' => 'select',
    'editableOptions' => function ($model) {
        return [
            'source' => [
                'PENDING' => 'PENDING',
                'APPROVED' => 'APPROVED',
                'REJECTED' => 'REJECTED'
            ],
            'value' => $model->visit_status,
            'editable' => true
        ];
    },
],

控制器动作如下:

public function actionUpdate()
{
    $pk = unserialize(base64_decode(Yii::$app->request->post('pk')));
    $model = MyModel::findOne($pk);
    if ($model) {
        $model->visit_status = Yii::$app->request->post('value');
        if ($model->validate(['visit_status'])) {
            $model->save(false);
        } else {
            throw new BadRequestHttpException($model->getFirstError('visit_status'));
        }
    }
}

如果 PJAX 被禁用,那么它工作正常,但不能为此妥协 PJAX

标签: yii2pjax

解决方案


推荐阅读