У меня 3 места, где я в URL использую task , это:
domain.com/task/{id} --- тут мне надо вывод
domain.com/cabinet/task/{id} --- вывод + запись в другую таблицу ПОКУПОК
domain.com/admin/task/{id} --- CRUD
а ещё с user такое же.
Как лучше организовать в таком случае контроллеры? Я могу создать:
1) папки для admin , cabinet, outer контроллеров и туда поместить В КАЖДЫЙ по TaskController , UserController
2) отдельно AdminController, CabinetController, OuterController и там уже все эти методы описывать
3) TaskController, UserController в котором будут в куче все методы для каждоый из страниц. Но чувствую будет каша..
Фронтенд, личный кабинет и админка - разные по логике модули, для независимого развития кода больше всего подходит пункт 1. Общую логику всегда можно вынести в сервисы/хелперы и через DI передавать контроллерам
Кстати да, в одной всем известной CMS папки и файлы дублируются что в админке что в клиентской части (только содержание разное естественно), структура типичного компонента:
а как вам идея, что если надо какую-то страницу отобразить, то это писать чисто в MainController (который будет в одной из папок Cabinet, Admin..)ю Например, тот же самый task/{id} будет в MainController.
ИЛИ второй вариант - делать через Route::view()
NikSIk31, через route::view() точно нет, это вариант для сайтов без логики. В MainController тоже особо не вариант, у Вас уже три модуля и надеяться что логика по таскам не будет раздуваться - не стоит
Daria Motorina, а если есть страница настроек - settings - в которой смена пароля, загрузка аватарки, смена полей юзера (имя, о себе, ...). Я так понимаю для этого можно создать Cabinet\SettingsController и там писать все эти роуты, но обрабатывать через сервис модели User?
Скажем, для загрузки аватарки я могу создать в сервисе метод, а в Cabinet\SettingsController только вызывать его. ----- это адекватно будет?
Daria Motorina, ой хорошо то как. Спасибо большое)
Кстати, насчет Route::view , не кажется ли Вам, что для статических страниц типа: главной сайта, страница с faq, agreement, policy можно писать именно Route::view если я уверен, что там не надо делать ничего кроме отображения вьюшки?
Или это чисто уже на уровне феншуя, типа - "тут у меня в контроллере рендерится, значить и faq страница тоже будет в контроллере и кашу я делать не хочу" ?
NikSIk31, SettingsController это непонятно что. Добавятся еще какие-нибудь настройки и запоминай потом что к чему относится. Тем более здесь никакие не настройки, а обновление полей юзера. UserController метод update роут users.update, авторизация через update UserPolicy в доке куча примеров. Route::view конечно нужно использовать там где нет логики, а для чего его придумали? если тебе нужно только вьюху показать, пустой метод контроллера будет лишней прослойкой.