gleber1
@gleber1

Какая часть приложения ответственная за фильтрацию входных данных?

Данные приходят сабмитом, поэтому отсекать на клиенте ненужный хлам прерывая сабмит не очень удобно.
На контроллер приходят как пустые данные(допускаемые валидацией) так и лишние .Лишними они являются для менеджера в который данные приходят после контроллера. Так вот кто должен занимать отбрасыванием и трансформированием данных? сам контроллер подгонять под менеджер ? менеджер под самого себя ? Или может завести DTO специальный для этого?
  • Вопрос задан
  • 229 просмотров
Решения вопроса 2
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Что именно вы имеете в виду под термином "менеджер"? Такого понятия в Laravel ни разу не встречал.

Laravel основан на архитектуре MVC. Расшифровка - Model View Controller.
Логика по работе с данными такова:

В view выводим все данные, и форму для заполнения данных.
View отправляет POST запрос, route обрабатывает его, Request получает, контроллер обрабатывает валидацию.
Если проблем нет - контроллер формирует запрос к модели (создавая новый объект), подстраивая входящие данные так, как нужно.

Как только данные сохранены - мы выводим их на нужной странице из модели.
В модели кроме связи с БД настраиваются связи (hasOne/Many, belongsToMany, полиморфические связи), назначаются scope функции (функции для обработки и приведения в порядок данных из модели), и на этом собственно все.

Конечно же, модель играет чуть большую роль при использовании различного рода пакетов (slugable, sortable, searchable, и т.д.) - но основная функция связь с БД, и формирование данных для view.
Ответ написан
miraage
@miraage
Старый прогер
DTO было бы применимо к приложению на Symfony, однако мыслите в верную сторону.

В моделях Laravel есть поле $fillable, которое отвечает за то, какие данные доступны для записи через mass assignment.
Так же, есть Form Validation, который формирует список правил, которые применятся к телу запроса.
Всё детально описано в документации.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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