Я читаю множество руководств, руководств по MVC и Laravel. Простой пример обработки регистрации пользователя. Большинство из них предлагают примерно следующее:
Модель пользователя:
Attributes: id, name, email, password
UserController:
Method getRegister() // Show registration form
Method postRegister()
Подробности см. В postRegister()
методе UserController
- Сбор пользовательского ввода
- Проверить по модели
- В случае неудачи вернуться к getRegister () с ошибками.
- Если прошел, попробуйте зарегистрировать пользователя (хеш-пароль, используйте ORM для вставки пользователя в базу данных)
- В случае неудачи вернуть исключение и перенаправить на соответствующую страницу.
- Если прошел, вернуть успех и перенаправить на соответствующую страницу.
Пример реализации: https://github.com/rydurham/L4withSentry
В этой реализации Модель просто используется как интерфейс к ORM, не более того.
Вопрос:
Теперь я не отказываюсь от реализации, опубликованной выше, потому что она показывает действительно хороший рабочий пример того, как работает Cartalyst Sentry ... Однако является ли это лучшим / подходящим способом регистрации пользователя?
Должна ли вся проверка / хеширование / регистрация и т. Д. Не выполняться в рамках модели? Затем модель возвращает контроллеру успех или отказ от действий?
Если вы посмотрите на UserController app/controllers/UserController.php
, он будет очень толстым, в то время как модель User app/models/User.php
очень тонкая.
например Должна ли модель User не иметь registerUser()
метода, который выполнял бы большую часть процесса регистрации?
В настоящее время пользователь может зарегистрироваться, или пользователь-администратор сможет зарегистрировать пользователя. Таким образом, большую часть кода контроллера необходимо будет повторить для admin/user/register
и login/register
.
Если я прав в своих мыслях, может ли кто-нибудь указать мне на потенциально Fat Model, реализацию Skinny Controller, чтобы я мог лучше понять, как они работают?