Экспериментирую с созданием сайта-каталога с админ панелью на laravel 5.8. Стараюсь следовать принципу CRUD. Но столкнулся с некоторыми затруднениями в логике.
На сайте есть роуты для отображения, например, главной страницы и страницы с товарами. Вроде бы всё просто
MainController
index - вывода содержимого главной страницы сайтаCatalogController
index - вывода содержимого каталогаshow - отображение отдельного товара.Но потом понадобится сделать панель администратора, где нужно будет, например, управлять списком товаров. Значит нужен другой контроллер - admin/ProductController c полным CRUD.
Также на главной странице сайта я решаю выводить блок с товарами по акции. И после создаётся ещё один раздел сайта, где нужно получать доступ к товарам. И это ещё один контроллер. Например, NotInSaleControll - список товаров не в продаже.
В итоге я работаю с одной и той же сущностью в трёх контроллерах, дублируя код.
Во всех контроллерах я получаю список товаров, а дальше в зависимости от нужд уточняю выборку. При этом везде я получаю не просто продукт, а и его связи с другими таблицами. Например, ->with('categories').
Т.е. не хватает какой-то абстракции. Как можно это решить? И как организовать контроллеры?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей