Сделал вывод формы обратной связи. После успешной отправки необходим редирект и внесение в сессию значения, позволяющего после редиректа во view показать сообщение об успешной отправке.
Однако, столкнулся со следующей проблемой - не записываются данные в сессию. Полагаю, что проблема в том, что на момент обработки виджета - мы уже выдали данные в браузер, т.е. заголовки не правятся, хотя сам редирект происходит ( $this->view->context->redirect(''); как делает редирект?)
Для тестов делаю такое
Код: Выделить всё
public function run()
{
$model = new \app\models\ContactForm();
var_dump(Yii::$app->session->getFlash('contactFormSubmitted'));
var_dump($_SESSION);
$_SESSION['test'] = 1;
Yii::$app->end();
Сам код виджета:
Код: Выделить всё
class ContactForm extends \yii\base\Widget
{
/**
* Renders the widget
* @return string the rendering result of the widget.
*/
public function run()
{
$model = new \app\models\ContactForm();
if ($model->load(Yii::$app->request->post()) && $model->contact(Yii::$app->params['admin.email'])) {
Yii::$app->session->setFlash('contactFormSubmitted', 1);
$this->view->context->redirect('');
Yii::$app->end();
}
return $this->render('contact-form', [
'model' => $model,
]);
}
}
UPD. Заметил еще странность - если выйти из аккаунта, то работает нормально все, в сессию сохраняется тестовое значение.