В MVP куда писать валидации - PullRequest
       23

В MVP куда писать валидации

33 голосов
/ 20 октября 2008

В шаблоне Model-View-Presenter, куда мы должны записывать проверки ввода пользователя.

Ответы [ 3 ]

21 голосов
/ 20 октября 2008

Специфичные для домена правила / проверки должны быть в Модели. У вас может быть model.validate (), чтобы вы знали, не нарушены ли правила. Посмотрите на классы модели Rails (ActiveRecord) для хорошей реализации этой концепции.

Вид должен затруднить пользователю ввод неверного ввода. Поэтому класс ошибок ввода «ввод строки для числового значения» должен быть пресечен до достижения докладчиком. Может быть некоторое дублирование проверок между моделью и представлением. Например. АтрибутX должен находиться в диапазоне от 1 до 100. Это должно быть проверено в модели .. в то же время вы можете захотеть вставить в спиннер пользовательский интерфейс с диапазоном minValue и maxValue, установленным в 1-100.

3 голосов
/ 20 октября 2008

Я обычно держу свой взгляд полностью чистым, никакой логики там. Но я не занимаюсь веб-разработкой. В ситуациях Ajax-ish может потребоваться проверка на стороне клиента, которая должна идти в представлении.

Проверка бизнес-логики идет в модели. Под проверкой бизнес-логики я имею в виду такие вещи, как проверка минимального размера заказа и т. Д.

Проверка ввода идет в докладчике. Это могут быть такие вещи, как проверка, если числовое поле не содержит нечисловых символов. Но в зависимости от вашей ситуации это также может означать проверку наличия файлов и т. Д.

В более сложных случаях, когда валидация должна использоваться повторно в разных местах, я обычно делю ее на механизм валидации, который можно вызывать в разных местах. Это решает некоторые проблемы с дублированием проверочного кода, который используется, например, на уровне представления, а также на уровне постоянства.

0 голосов
/ 20 октября 2008

Presenter ....

Представление должно иметь «виджеты», которые, по возможности, предотвращают неправильный ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...