Обновить ActiveForm в модальном окне по нажатию на кнопку, открывающую эту форму(AJAX)[РЕШЕНО]

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
terrarium volition
Сообщения: 99
Зарегистрирован: 2021.07.15, 21:22

Обновить ActiveForm в модальном окне по нажатию на кнопку, открывающую эту форму(AJAX)[РЕШЕНО]

Сообщение terrarium volition »

Всем доброго дня!

Подзапутался с update form with ajax, помогите, пожалуйста, разобраться.

На странице есть кнопка, которая по ajax шлёт id модели с контроллер.
В контроллере выбирается сама модель и дальше ею надо обновить ActiveForm, которая находится в модальном окне.

Модальное окно отрисовано во view и загружается при загрузке страницы.

Не могу понять, как подменить $model в модальном окне на новую, которую я получил в контроллере?

View:

Код: Выделить всё

<?php   
        Modal::begin([
            'id'        =>  $model->modalID,
            'header'    =>  Html::button('Изменить настройки', ['class' => 'btn btn-success', 'id' => 'modalupdateButton']),
        ]);
    ?>  
 
        <?php echo $this->render('/config/_form', ['model' => $model]); ?>
    <?php             
        Modal::end();
    ?>
_form.php :

Код: Выделить всё

<div class="config-form">
    <?php
        $form = ActiveForm::begin(['id' => 'createform', 'enableAjaxValidation' => true,
            'options' => [
                'enctype'   =>  'multipart/form-data',
                'class'     =>  'form-horizontal',
        ],]);
    ?>  
        <?php if (!$model->isNewRecord) { $form->field($model, 'id')->hiddenInput(); } ?>

        <?= $form->field($model, 'pname')->textInput(['maxlength' => true]) ?>
        <div class="row">
            <div class="col-sm-8">
                <?= $form->field($model, 'mname')->textInput(['maxlength' => true]) ?>
            </div>
            <div class="col-sm-4">
                <?= $form->field($model, 'address')->textInput(['maxlength' => true]) ?>
            </div>
        </div>
        <div class="row">
            <div class="col-sm-6">
                <?= $form->field($model, 'im')->textInput(['maxlength' => true]) ?>
            </div>
            <div class="col-sm-6">
                <?= $form->field($model, 'ir')->textInput(['maxlength' => true]) ?>
            </div>
        </div>
    <?php ActiveForm::end(); ?>
</div>
Controller:

Код: Выделить всё

    public function actionUpdateModalData(){

        if ((Yii::$app->request->post())&&(Yii::$app->request->isAjax)) {
            Yii::$app->response->format = yii\web\Response::FORMAT_JSON;

            $id = explode('_', Yii::$app->request->post('uploadId'))[0];

            $session = Yii::$app->session;
            $session->set('uploadId', $id);

            if ($id){
                $model = Config::find()->where(['user_id' => \Yii::$app->user->identity->id])->andWhere(['id' => $id])->one();
            }else{
                $model = new Config();
            }

        $response = 
            [
                'model'          =>  $model,
            ];

        return $response;
        
        }
    }
terrarium volition
Сообщения: 99
Зарегистрирован: 2021.07.15, 21:22

Re: Обновить ActiveForm в модальном окне по нажатию на кнопку, открывающую эту форму(AJAX)[РЕШЕНО]

Сообщение terrarium volition »

Всё вообще не так делается.
Нашёл пример на сайте, вопрос, оказывается, изжёван, просто надо искать нормально.
Спасибо, что это мне и хотели сказать, когда не отвечали.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Обновить ActiveForm в модальном окне по нажатию на кнопку, открывающую эту форму(AJAX)[РЕШЕНО]

Сообщение unknownby »

terrarium volition писал(а): 2023.04.22, 00:33 Всё вообще не так делается.
Нашёл пример на сайте, вопрос, оказывается, изжёван, просто надо искать нормально.
Спасибо, что это мне и хотели сказать, когда не отвечали.
Мы всегда рады помочь :D
Ответить