AlexAll, здравый смысл и практика это решила. Редиректы в контроллерах. Вы думаете это назло так сделали, что у модели нет редиректа? Он просто там неуместен.
Если нужно при смене пароля то:
Controller
actionChangePassword()
{
...
// $user это нужная вам модель
if($user->changePassword($oldPass, $newPass)) {
return $this->redirect();
}
}
Decadal, я вообще нечего про пхп не говорю, я спрашиваю, это правильно что сделано в модели? и если да то как сделать так чтобы после смены пароля вывелось уведомление об этом или надо сделать смену пароля в контролере?
AlexAll, в моделях никаких редиректов, подключений видов и подобных штук.
Для этого предназначен контролер, который обеспечивает связь между моделями и видами.
я хочу сделать там редирект чтобы после сохранения нового пароля перекидывало на страницу что пароль изменен
И получите дурно пахнущую субстанцию известного цвета...
AlexAll, я вам ещё раз говорю - нельзя делать это в модели. Человек, по чьему гайду вы делали это, не нуждался в редиректе. А вы нуждаетесь. Вы будете сопротивляться тому чтобы сделать редирект в контроллере пока не найдёте другой гайд, в котором написано "делайте редирект в контроллере при смене пароля, товарищ AlexAll"?
У вас есть чудесная функция
public function changePassword()
{
if ($this->validate()) {
$user = $this->_user;
$user->setPassword($this->newPassword);
return $user->save();
} else {
return false;
}
}
у вас есть замечательный контроллер с каким-то action
AlexAll, они сделаны в модели. В контроллере сделан только редирект. А зачем нужен контроллер? Для управления запросами к юзеру \ от юзера. А редирект это что? Запрос к юзеру, а точнее говоря, response 301. Это исключительно "контроллерская" компетенция. Никак не модели.
AlexAll, в действии контролера может быть несколько методов, принадлежащих разным моделям.
Представьте размер этого действия и какая "каша" кода там будет.
А так всё сводится к вызову определённого метода определённой модели одной строкой. Сам же метод может содержать 100500 строк.