Как на Laravel делать приложения с формочками и CRUD операциями?

Мне часто приходится разрабатывать типичные веб приложения с множеством формочек и CRUD операций. Например всякие кастомные CRM или системы учета. Обычно это несколько десятков формочек, с сотнями разных полей и десятки таблиц. Каждая из формочек связана с одной или несколькими таблицами в БД.

Учебники по Laravel обычно пишут примерно одно и тоже. Для каждой модели надо: создать миграцию, сделать сидер, создать модель, создать контроллер с нужными операциями, сверстать формочку с полями, сделать валидацию (возможно черед отдельный request-класс), прописать маршруты, сделать тесты.. и т.д. Т.е. все это размазывается по разным файлам, классам.

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

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

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

А какой правильный путь стоит использовать в Laravel?
  • Вопрос задан
  • 649 просмотров
Пригласить эксперта
Ответы на вопрос 3
glaphire
@glaphire
PHP developer
Правильный путь не завязан на фреймворк, стоит создать какое-то логическое ядро (core модуль) и на его основе создавать модули-реализацию. Можно запилить приватный ларавелевский пакет, который объединит всю логику генерации и конфигурации кода в стандартизированном виде
Ответ написан
Комментировать
@jazzus
Т.е. все это размазывается по разным файлам, классам.

Если данная концепция не устраивает нет смысла использовать Ларавел.

Самое сложное, это то, что при любом изменении набора полей все это постоянно приходится править в разных местах.

В IDE должна быть навигация по файлам, когда пишешь часть пути и тебе открывается список. Чтобы это работало наименования должны быть понятными и простыми.

если для каждой модели это делать вручную, то это будет занимать кучу времени

Кучу времени занимает поддержка велосипедов. В Ларавел новое поле добавляется за 5 минут. Миграция на добавление поля, добавить валидацию в реквест файл. Добавить инпут на фронт. Всё. Какой свой велосипед спасет от данных действий? Никакой. Везде нужно писать валидацию, добавлять поле в бд и на фронт.

и приводить к постоянным ошибкам

Чтобы не было ошибок нужно писать тесты. Т.е. перед добавлением поля пишешь всесторонний тест включающий валидацию и расслабляешься т.к. он приведет тебя к результату почти без необходимости думать. Плюс будет проверять в дальнейшем.

А какой правильный путь стоит использовать в Laravel?

Правильный путь указан самим Ларавел. См доки. Нужно использовать Ларавел и не писать велосипеды или писать велосипеды, а Ларавел оставить в покое)
Ответ написан
Комментировать
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
– Кастомизация дефолтных стабов
https://github.com/laravel-shift/blueprint
– Кастомные команды для artisan, которые автоматизируют многие шаги
– Кастомные пакеты которые берут на себя heavy lifting и предоставляют удобный API для работы

Вы же программист. Фреймворк – это не жесткие рамки, в которые вас зажимают. Это гибкая основа, на базе которой вы строите ровно то, что вам нужно. Так, как вам удобнее.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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