@QQbit

Yii2 реализация ajax?

Пытаюсь создать кнопку средствами ajax. При нажатии на которую будет происходит уменьшение значения max_drink на одну единицу. Но так как новичок в этом деле не могу понять как получить этот запрос в контроллере(и в контроллере ли его получать?) и как отправить его в бд и изменить запись в столбце max_drink у пользователя?

Код вида
<?php

use yii\helpers\Html;

use yii\bootstrap\ActiveForm;

/* @var $this yii\web\View */
/* @var $model app\models\Privil */
/* @var $form yii\widgets\ActiveForm */
?>

<br>

    <?php $form = ActiveForm::begin([

        'layout' => 'horizontal',
        'fieldConfig' => [
            'template' => "{label}\n<div class=\"col-lg-3\">{input}</div>\n<div class=\"col-lg-8\">{error}</div>",
            'labelOptions' => ['class' => 'col-lg-1 control-label'],
        ],
    ]); ?>
<div  >
    <?= $form->field($model, 'client_id')->textInput() ?>
</div>
    Напиток:<?= $model->max_drink ?><br>
    <?= Html::submitButton($model->max_drink, ['update']);

    ?>
    <button class="btn btn-lg btn-success" >Еда:<?= $model->max_food ?></button>

<!--        --><?//= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>


    <?php ActiveForm::end(); ?>

</div>
<?php
$js = <<<JS
        $('form').on('beforeSubmit', function(){
        var data = $model->max_drink-1;
        $.ajax({
            url: 'update?id='+$model->client_id,
            type: 'POST',
            data: {'id':data},
            success: function(res){
                console.log("tratata" +data);
            },
            error: function () {
                alert("atata");
            } 
        });
        return false;
    });
JS;
$this->registerJs($js);
?>


контроллер
public function actionUpdate($id='')
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->get()) ) {
            return $this->redirect(['update', 'id' => $model->client_id]);
        }





        return $this->render('update', [
            'model' => $model,
        ]);

        if(\Yii::$app->request->isAjax){
            return 'alert("Запрос принят!")';
            return $this->redirect(['update', 'id' => $model->client_id]);
        }

        if($model->load(\Yii::$app->request->post())){

            return $this->redirect(['update', 'id' => $model->client_id]);
        }
        return $this->render('update', compact('model'));
    }
    public function actionCreate()
    {
        $model = new Privil();

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->client_id]);
        }

        return $this->render('create', [
            'model' => $model,
        ]);
    }
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы