Подтвердить что ты не робот

В MVP, где писать проверки

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

Presenter....

В представлении должны быть "виджеты", которые по возможности предотвращают недопустимый ввод.