Необходимо ли проверить в Модели? (Symfony основывал вопрос, но имел отношение к общему MVC),

Это - быстрый вопрос, касающийся Symfony, но могло быть общим вопросом MVC.

У меня есть класс в моей модели, например, WebUser. Этот класс имеет свойство email_address. Это значение должно быть уникально для каждого WebUser.

Теперь, я сделал его так, все мои формы Symfony проверяют это email_address уникально для данного WebUser, однако я задаюсь вопросом, должен ли я добавить эту проверку к модели также?

Но это также получило меня взгляды, должны Вы на самом деле проверять каждый set() метод в модели? Это кажется достаточно мудрым решением удостовериться, что никакие ошибочные данные не заканчиваются в базе данных, однако большинство (если не все), данные должны пройти контроллеры, которые проверяют также. Таким образом мне кажется, что я выполняю ту же проверку дважды, и это просто кажется бессмысленным?

Каковы Ваши мысли об этом? Я все еще склоняюсь к проверке в модели, поскольку это имеет большую часть смысла, поскольку это диктует бизнес-логику.

Если необходимо проверить в модели, как Вы бросаете соответствующее set() ошибка в Symfony, который обрабатывается правильно платформой формы?

Спасибо.

6
задан Stephen Melrose 25 January 2010 в 13:28
поделиться

4 ответа

Я не согласен с «валидацией должен быть частью логики домена, а не передней логикой».

Валидация представляет собой сложную функциональную часть вашего приложения, а должны быть в курсе . т.е. Вы должны знать, что пользователь вошел в систему, какие учетные данные у нее есть, статус запроса / формы и так далее. Модели вместо этого должны быть контекстным агностическим (для работы в любой среде не только HTTP-запрос, но и CLI и т. Д.), Чтобы они не знают о пользователе, состоянии и HTTP-запроса. Это сильное требование к жизнеспособности ваших модельных классов.

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

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

6
ответ дан 10 December 2019 в 02:47
поделиться

Я не могу говорить специально для Symfony, но я знаю, что я намеренно избегаю валидации формы Zend framework, и вместо этого проверяют на моих моделях (Zend Framework не предоставляет свой собственный модельный компонент, так что не имеет фактического мнения по этому вопросу).

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

Причины, по которым я думаю, что проверка модели лучше всего:

  • Есть вероятность, что модель будет изменять данные после того, как она пройдет через форму, и до того, как она переходит в DB
  • , не должна быть частью логики домена, не должна быть частью логики домена, не должна быть частью логики домена Конец логики (я понимаю, что симфония, кажется, не согласен).
  • Состояние проверки движется с помощью объекта модели вместо объекта формы.

Если вы не полностью проданы только в модели, комбинация двух звуков, как хорошее решение.

Редактировать: В конце дня он может иметь смысл просто пойти с вашим каркасом на этом. Если симфония кажется большинством самоуверенности к проверке в контроллере и не обеспечивает легкого пути для проверки в модели, просто пойти с тем, что они хотят, чтобы вы делали (или направление, в котором сообщество Symfony опирается). Борьба с вашей структурой никогда не бывает забавным.

3
ответ дан 10 December 2019 в 02:47
поделиться

Я не могу помочь с частью Symfony, но большинство MVC-фреймворков проверяют в модели, поскольку это единственное место внутри среды MVC, где должна быть валидация.
Это касается проверки атрибутов модели конечно.

0
ответ дан 10 December 2019 в 02:47
поделиться

Я думаю, что вы должны пользователь MVC Validator Набор инструментов установлен других полагаться на моделировать его проще, а также испытательный и его на основе формы собраны не на модель, которая дает вам бесплатный пробег путь

С уважением Мэрван HAfez

0
ответ дан 10 December 2019 в 02:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: