Вопрос прост. Где я должен поместить процесс проверки формы в шаблон проектирования mvc (Zend, Symphony, Cakephp, Codeigniter). Я задаю этот вопрос, потому что у меня есть свои собственные рамки. Но я не могу решить, где я должен обрабатывать проверку формы. Например, я могу писать инструкции if в контроллере, но это делает контроллер «fat», или я могу добавлять верификационные утверждения в функцию модели (в User :: register (,,)). Конечно, это не очень сложно, но моя цель - понять, как они поступают в приложениях уровня предприятия.Где лучше всего проверять данные формы?
ответ
Если вы рассматриваете Модели в MVC как то, что мы в мире .NET называем ViewModels (и, как я полагаю, называются «Модели презентаций в другом месте») вместо «Модели доменов», модель будет отличным местом для добавления проверки/проверки.
Это позволит вам повторно использовать логику проверки везде, где вы повторно используете Модель, и это имеет смысл, поскольку Модель будет инкапсулировать логику проверки вместе с данными. Это звучит как высокая сплоченность для меня.
Как проверка работоспособности, структура ASP.NET MVC, похоже, движется в этом направлении. Поскольку вопрос помечен как «php», я не уверен, что этот последний фрагмент информации усиливает или ослабляет аргумент.
Неправильное использование термина «сцепление»? – paxos1977
@ceretullis: Я так не думаю, согласно определению Википедии: http://en.wikipedia.org/wiki/Cohesion_(computer_science) –
Валидация - Контроль ввода. MVC означает Model View Controller, поэтому проверка должна выполняться в контроллере.
Общие проверки, такие как isInt(), isStr(), isEmailAddress, isFloat() и т. Д. И т. Д., Могут/должны быть помещены в базовый контроллер. Тогда у вас могут быть субконтроллеры для указанных моделей (сопоставление с вашей базой данных). Затем эти субконтроллеры распространяются от базового контроллера.
-1 Я думаю, вы смешиваете семантическое сходство Control и Controller с тем, что подразумеваете, что должна быть структурная эквивалентность. –
Существует несколько мест, где может быть выполнена валидация.
Прежде всего, клиентская сторона или серверная сторона: часто рекомендуется выполнять предварительную проверку на стороне клиента (например, только разрешенные номера!) Перед отправкой битов по кабелю. Проверка на стороне сервера всегда обязательна в качестве требования безопасности/целостности данных.
Требования к лицевой стороне и модели: конкретная форма может не знать требования модели к связанным объектам данных (например, если существует правило бизнес-логики, значение 3 в определенном поле не должно присутствовать, если число связанных записи меньше 5) - единственное место, которое будет знать, что является моделью.
- 1. Где лучше всего проверять разрешения?
- 2. Где лучше всего проверять разрешения объекта?
- 3. Где лучше всего разместить проверку формы?
- 4. Где лучше всего объявлять глобальные переменные и периодически проверять?
- 5. Где лучше всего фильтровать данные запроса AJAX?
- 6. Payum - Где лучше всего изменить данные платежа?
- 7. Где лучше всего разместить генератор.close()?
- 8. Где лучше всего объявить переменные?
- 9. При создании формы, где лучше всего устанавливать значения меток?
- 10. Где лучше всего добавить диалог с подтверждением?
- 11. python: что лучше всего проверять несколько ключей в словаре?
- 12. В JMeter, где лучше всего определить переменную?
- 13. Где лучше всего регистрировать ответ в Restlete
- 14. React.js & Flux - где лучше всего регистрировать событие Websocket (получать данные)
- 15. Где лучше всего загружать точные данные lat/long/alt?
- 16. Где лучше всего хранить данные о пользователях в asp.net?
- 17. Где лучше всего создавать тестовые данные в TDD?
- 18. Какой метод лучше проверять учетные данные пользователя?
- 19. AngularFire: что лучше всего проверять, если $ firebaseObject не имеет ключей?
- 20. Где лучше всего сохранить ход игры?
- 21. Где лучше всего переосмыслить графическое программирование
- 22. Где лучше всего зарегистрировать Угловые 2 провайдера
- 23. Где лучше всего определить валидацию для поля?
- 24. Где лучше всего начать изучать сервлет/tomcat?
- 25. Где лучше всего начать работу с текстом?
- 26. Где лучше всего настроить регистратор в Scrapy?
- 27. Где лучше всего сравнить даты в Perl?
- 28. Где лучше всего начать изучать LINQ?
- 29. Где лучше всего определить перечисления в swift?
- 30. Обучение программированию JAVA - где лучше всего начать ...?
Аналогичный вопрос здесь http://stackoverflow.com/questions/223097/where-do-you-record-validation-rules-for-form-data-in-a-web-application – blank
Очень другой вопрос ... –