как обновить поле в базе данных при нажатии кнопки в yii2? - PullRequest
0 голосов
/ 16 ноября 2018

что я хочу, это когда я нажимаю кнопку «вправо», мой контент в поле «статус» в таблице базы данных обновляется с нуля до «одобрить». и когда я нажимаю кнопку "x", содержимое в поле "status" в таблице базы данных обновляется с нуля до "reject".

'buttons' => [

                    'view' => function ($url, $model){
                        return Html::a('<span class ="glyphicon glyphicon-eye-open"></span>', $url, [
                                        'title' => Yii::t('app','view'),
                                        ]);
                    },
                    'approve' => function ($url, $model){
                        return Html::a('<span class ="glyphicon glyphicon-ok-sign"></span>', $url, [
                                        'title' => Yii::t('app','approve'),
                                        ]);
                    },
                    'reject' => function ($url, $model){
                        return Html::a('<span class ="glyphicon glyphicon-remove-sign"></span>', $url, [
                                        'title' => Yii::t('app','reject'),
                                        ]);
                    }
        ],

        'urlCreator' => function ($action, $model, $key, $index) {
                if ($action === 'view') {
                    $url = 'index.php?r=appointment-confirmation/view&id='.$model->appID;
                    return $url;
                }
                if ($action === 'approve') {
                    $url = 'index.php?r=appointment-confirmation/view&id='.$model->appID;
                    return $url;
                }
                if ($action === 'reject') {
                    $url = 'index.php?r=appointment-confirmation/view&id='.$model->appID;
                    return $url;
                }   
        }

вот как это выглядит:

1 Ответ

0 голосов
/ 16 ноября 2018

Создание ссылок на действие changeStatus, передача статуса в качестве get-параметра:

if ($action === 'approve') {
    return $url = Url::to(['appointment-confirmation/change-status', 'id' => $model->appID, 'status' => 'approve']);
}
if ($action === 'reject') {
    return $url = Url::to(['appointment-confirmation/change-status', 'id' => $model->appID, 'status' => 'reject']);
}

Создание действия changeStatus (поиск встречи, изменение статуса, перенаправление на просмотр):

public function actionChangeStatus($id, $status)
{
    $appointment = Appointment::findOne($id);
    if (!$appointment) {
        throw new HttpException(404);
    }
    $appointment->status = $status;
    if ($appointment->save()) {
        $this->redirect(['view', $id => $appointment->id]);
    } else {
        throw new Exception('Error while saving appointment');
    }
}
...