kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Почему передается $_GET вместо $_POST?

В файле вида есть форма, которая отвечает за передачу введенных в поле данных модели, для добавления их в БД:
<form>
<?php $form = ActiveForm::begin(['action' =>['site/editdata'], 'id' => 'form-editdata', 'method' => 'post',]); ?>
    <div class="input-block">
        <p>Фамилия и Имя Отчество*</p>
        <p><?php echo Yii::$app->user->identity->fio;?></p><br>
        <input type="text" name="EditdataForm[fio]" class="input__item">
    </div>
    <div class="input-block clearfix">
        <div class="col-sm-6">
            <div class="left-input">
            <div class="row">
                <p>Мобильный телефон*</p>
                   <p><?php echo Yii::$app->user->identity->phone;?></p><br>
                    <input type="text" name="EditdataForm[phone]" class="input__item">
            </div>
        </div>
    </div>
    <div class="col-sm-6">
        <div class="row">
            <div class="right-input">
                <div class="post-input">
                    <p>Электронная почта *</p>
                    <p><?php echo Yii::$app->user->identity->email;?></p><br>
                    <input type="text" name="EditdataForm[email]" class="input__item">
                </div>
            </div>
        </div>
    </div>
    <div class="input-block">
        <?= Html::submitButton('Сохранить', ['class' => 'save__btn', 'name' => 'editdata-button']) ?>
    </div>
<?php ActiveForm::end(); ?>
</form>

Код site/editdata следующий:
<?php $form = ActiveForm::begin(['id' => 'form-editdata']); ?>
    <?= $form->field($model, 'fio')->textInput(['autofocus' => true]) ?>
    <?= $form->field($model, 'email') ?>
    <?= $form->field($model, 'street') ?>
    <?= $form->field($model, 'house') ?>
    <?= $form->field($model, 'housing') ?>
    <?= $form->field($model, 'apartment') ?>
    <?= $form->field($model, 'phone') ?>
    <?= $form->field($model, 'password')->passwordInput() ?>
    <div class="form-group">
        <?= Html::submitButton('Edit', ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?>
    </div>
<?php ActiveForm::end(); ?>

Функция модели EditdataForm:
public function editdata()
{
    if (!$this->validate()) {
        return null;
    }

    $user = new User();
    $user->username = $this->username;
    $user->email = $this->email;
    $user->fio = $this->fio;
    $user->apartment = $this->apartment;
    $user->house = $this->house;
    $user->housing = $this->housing;
    $user->street = $this->street;
    $user->phone = $this->phone;
    $user->setPassword($this->password);
    return $user->save() ? $user : null;
}

И контроллер:
public function actionEditdata()
{
    return $this->render('editdata');
}

По нажатию кнопки "Сохранить" вместо отправки запроса $_POST, формируется $_GET, который записывается в адресную строку, $_POST пуст.
Абсолютно такая же самая реализация регистрации работает, то есть формирует $_POST запрос и передает куда нужно.
Единственное - страница, на которой расположена изначальная форма являются частью модулю и расположена по адресу modules/privateCabinet/views но я не думаю, что это должно как то повлиять на то, что вместо $_POST передается $_GET, хотя в форме указано обратно:
ActiveForm::begin(['action' =>['site/editdata'], 'id' => 'form-editdata', 'method' => 'post',])
  • Вопрос задан
  • 412 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
milokmurlika
@milokmurlika
Няшка
Смотрите что у вас в HTML получается
Ответ написан
Ваш ответ на вопрос

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

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