Ниже вы видите пример моего контроллера, метод confirm_changings() получает ключ(passkey) пользователя который хочет восстановить свой пароль, и выполняем проверки с помощью моделя User. После удачной проверки, пользователю высылается новый пароль на почту.
Вопрос:
1) Правильно ли я делаю структуру контролера?
т.е. я знаю, что контроллер только получает данные и проверяет их с помощью моделей. Контроллер не в коем случае не должен выполнять какие либо модификации, как я понял он манипулирует результатами из методов Model и в зависимости от них открывает те или иные данные в View.
2) Правильно я делаю, что полученный результат от методов Моделей я проверяю в Контроллере и выдаю сообщение об ошибке или успехе(т.е. сама структура)?
Посмотрите, пожалуйста, код и скажите правильно ли он написан с точки зрения MVC?
<?php
class Authorization_Controller extends Base_Controller {
public function action_confirm_changings() {
/* ————————
* 1) Подтверждение запроса на восстановления пароля
* 2) Генерация и изменение старого пароля на новый
* 3) Отправка письма пользователю
* ————————*/
// Ответ после выполнения работы скрипта
$Content = '';
// Уникальный ключ пользователя из URL сегмента
$Passkey = URI::segment(3, 0);
$UserRowsValueByPasskey = User::UserRowsValueByPasskey($Passkey);
if(!@$UserRowsValueByPasskey->login) {
// Такой Passkey не был обнаружен в базе данных
$Content .= Template::DisplayResponse(
Template::lang('registration.empty_passkey'), 'error'
);
}
else {
// Пользователь подтвердил свой email, обновляем его пароль
$SetNewUserPasswordAndReturnIt = User::SetNewUserPasswordAndReturnIt(
$UserRowsValueByPasskey->login
);
if(!$SetNewUserPasswordAndReturnIt) {
// Возникла ошибка во время обновления данных
$Content .= Template::DisplayResponse(
Template::lang('authorization.password_updating_failed'), 'error'
);
}
else {
// Пароль пользователя успешно изменен
$Content .= Template::DisplayResponse(
Template::lang('authorization.successful_password_updating', array(
'login' => $UserRowsValueByPasskey->login,
'email' => $UserRowsValueByPasskey->email,
)), 'success'
);
// Отправляем пользователю письмо с его новым паролем
$SendMail = User::sendMail($UserRowsValueByPasskey->email,
'successful_password_updating', // Текстовой шаблон письма
array(
// Переменные которые будут заменены в шаблоне письма на значение ниже
'login' => $UserRowsValueByPasskey->login,
'password' => $SetNewUserPasswordAndReturnIt,
'domain' => Request::server('http_host'),
'ip' => Request::ip(),
)
);
}
}
Section::inject('content', $Content);
return View::make('template')
->with('header', Template::seo_header() );
}
}
?>
Фреймворк: Laravel