Абстракция в контроллерах

135
28 октября 2019, 21:30

Экспериментирую с созданием сайта-каталога с админ панелью на laravel 5.8. Стараюсь следовать принципу CRUD. Но столкнулся с некоторыми затруднениями в логике.

На сайте есть роуты для отображения, например, главной страницы и страницы с товарами. Вроде бы всё просто

  • MainController
    • index - вывода содержимого главной страницы сайта
  • CatalogController
    • index - вывода содержимого каталога
    • show - отображение отдельного товара.

Но потом понадобится сделать панель администратора, где нужно будет, например, управлять списком товаров. Значит нужен другой контроллер - admin/ProductController c полным CRUD.

Также на главной странице сайта я решаю выводить блок с товарами по акции. И после создаётся ещё один раздел сайта, где нужно получать доступ к товарам. И это ещё один контроллер. Например, NotInSaleControll - список товаров не в продаже.

В итоге я работаю с одной и той же сущностью в трёх контроллерах, дублируя код.

  • Главная страница. Список актуальных товаров по алфавиту, но по акции.
  • Каталог. Список актуальных товаров, но в определённой категории. + фильтрация + сортировка
  • Какой-то ещё один раздел сайта. Например, список товаров, которые не продаются сейчас.
  • Панель администратор. Список всех товаров по алфавиту.

Во всех контроллерах я получаю список товаров, а дальше в зависимости от нужд уточняю выборку. При этом везде я получаю не просто продукт, а и его связи с другими таблицами. Например, ->with('categories').

Т.е. не хватает какой-то абстракции. Как можно это решить? И как организовать контроллеры?

READ ALSO
Как найти и выбрать элементы коллекции,используя методы map и search?

Как найти и выбрать элементы коллекции,используя методы map и search?

Получена коллекция с помощью модели eloquent:

122
Разные урлы, разный контент, один single-page WP

Разные урлы, разный контент, один single-page WP

Имею сайт на WordPress, есть API турагенствана главной странице циклом for показываю информацию до 6 горящих туров в виде блоков

113
Как узнать hardware-id чужого компьютера?

Как узнать hardware-id чужого компьютера?

Всем доброго вечераПодскажите пожалуйста, можно ли каким то способом узнать hardware-id чужого компьютера? Или это миф?

130