Сведения о вопросе

Ayrat

15:37, 29th August, 2020

Теги

MVC-где реализовать проверку формы (на стороне сервера)?

Просмотров: 468   Ответов: 4

При кодировании традиционного приложения MVC, какова наилучшая практика для кодирования проверки формы на стороне сервера? Принадлежит ли код контроллеру или уровню модели? И почему?



  Сведения об ответе

lats

18:19, 5th August, 2020

из Википедии:

Model-view-controller (MVC) - это архитектурный шаблон, используемый в программной инженерии. Успешное использование шаблона изолирует бизнес-логику от соображений пользовательского интерфейса, что приводит к созданию приложения, в котором проще изменить либо внешний вид приложения, либо лежащие в его основе бизнес-правила, не затрагивая другие. В MVC модель представляет информацию (данные) приложения и бизнес-правила, используемые для управления данными; представление соответствует элементам пользовательского интерфейса, таким как текст, элементы checkbox и т. д.; а контроллер управляет деталями, связанными с сообщением модели действий пользователя, таких как нажатия клавиш и движения мыши.

Таким образом, модель-это удерживающее приложение и бизнес-правила.


  Сведения об ответе

park

19:06, 25th August, 2020

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

Например,

Уровень проверки будет проверять формат даты, формат суммы, обязательные поля и т. д...

Таким образом, эта модель будет полностью сосредоточена на деловых проверках, таких как сумма x должна быть больше, чем сумма y.


  Сведения об ответе

LAST

22:54, 5th August, 2020

Мой опыт работы с MVC до сих пор полностью состоит из rails.

Rails делает это проверка 100% в модели.
По большей части это работает очень хорошо. Я бы сказал, что в 9 случаях из 10 это все, что вам нужно.

Однако есть некоторые области, где то, что вы отправляете из формы, не соответствует вашей модели должным образом. Там может быть какая-то дополнительная фильтрация/перестановка или так далее.

Лучший способ решить эти ситуации, который я нашел, - это создать объекты искусственной модели, которые в основном действуют как объекты модели, но сопоставляют 1-to-1 с данными формы. Эти объекты искусственной модели на самом деле ничего не сохраняют, они просто ведро для данных с прикрепленными проверками.
Примером такой вещи (в rails) является ActiveForm

Как только данные попадают в них (и являются действительными), обычно довольно просто перенести их непосредственно на ваши фактические модели.


  Сведения об ответе

dump

00:06, 11th August, 2020

Основная проверка синтаксиса должна быть в элементе управления, поскольку он переводит пользовательский ввод для модели. Модель должна выполнять проверку реальных данных.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться