if (Yii::app()->request->isPostRequest) {
$model = new User('reset');
if (isset($_POST['User'])) {
$model->attributes = $_POST['User'];
if ($model->validate()) {
//change pasword etc
if ($user->save()) {
$this->render('reset', array('model' => $model, 'done' => 1));
}
} else {
$model->password = '';
$model->repeat_password = '';
$this->render('reset', array('model' => $model));
}
}
} elseif (isset($_GET['id']) && isset($_GET['key'])) {
$id = $_GET['id'];
$key = $_GET['key'];
$key_comp = ....;
if ($key == $key_comp) {
$this->render('reset', array('model' => $model, 'reset' => $key_comp));
} else {
$this->render(array('forgot'));
}
} else {
$this->redirect(array('forgot'));
}
Я получаю эту ошибку:
Невозможно изменить информацию заголовка — заголовки уже отправлены
Когда я обновил пароль, а затем страница отображается снова (переменная done), ключ изменяется и, следовательно, ломает if ($key == $key_comp)
,
Но редирект отправляет на другую страницу с уже вызванным рендером. Это явно не лучший метод и требует некоторого улучшения, но я не думаю, что это возможно сделать одним действием.
Это может быть сделано или должно быть отделено?
Задача ещё не решена.
Других решений пока нет …