По какому принципу создавать контроллеры на Laravel ?
Мне нужно реализовать front-end(посетители) и админскую часть ? А именно, как правильно расположить папки и контроллеры ?
В админской части у меня не только админ, там еще будут superuser(root), редактор, главный редактор.
Controllers
Superuser
SuperuserController.php и какие то файлы
Chief editor
ChiefEditorController.php и какие то файлы
Editor
EditorController.php и какие то файлы
Вроде бы структура понятна, но у главного редактора, редактора и у superuser будут одинаковые коды, так зачем же их повторять ? А если даже где то по функционалу чем то будет отличаться, но не сильно же отличаться будет, можно это все добавлять проверяя middleware. Как можно построить структуру правильно ?
По своему опыту скажу что пилить одни контроллеры на все не тру. Лучше сделать два немспейса frontend & backend, никакой путаницы не будет. Во первых это ближе к DDD, так как контроллер фронта не может управлять данными с бэка. Да и плюс как вы например будете делить CRUD если все засунете в один?
Внутри бек контроллеров используйте роли и middleware для разделения на Editor, Moderator и т.д.
А вот умников выше которые советуют еба**ть все в кашу и разделять только лишь ролями и разрешениями я бы не слушал. Если вы так начнете делать то вскоре сами себя проклянете и дайбог никому далее не придется за вами разбираться
Тоже так делаю, неймспейсамы как у вас (например admin && frontend), тогда и роуты и правила валидации легче разделить, да и легче по правам все это контролировать, можно мыддлвар на роут, на группу роутов ставить, или же на отдельные методы в контроллере, например для модаратора и редактора..