Как сделать редирект после отправки формы на yii2?

Пользователь

от lamar , в категории: PHP , 10 месяцев назад

Как сделать редирект после отправки формы на yii2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от maymie , 10 месяцев назад

@lamar 

Для того чтобы сделать редирект после отправки формы на Yii2, необходимо использовать метод returnUrl() в контроллере.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public function actionContact()
{
    $model = new ContactForm();

    if ($model->load(Yii::$app->request->post()) && $model->contact(Yii::$app->params['adminEmail'])) {
        Yii::$app->session->setFlash('success', 'Thank you for contacting us. We will respond to you as soon as possible.');

        // редирект на страницу "success"
        return $this->redirect(['site/success']);
    }

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


В данном примере, если форма успешно отправлена, то происходит редирект на страницу "success". Адрес этой страницы задается в параметре ['site/success'].


Также можно использовать абсолютный адрес для редиректа:

1
return $this->redirect('https://example.com/');


Обратите внимание, что редирект должен производиться только после успешной отправки формы. Для этого проверяется результат метода $model->contact(). Если он вернул true, то форма успешно отправлена. Если в форме есть ошибки валидации или произошла ошибка при отправке письма, метод вернет false.