Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

Ведущий....

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top