Как выстроить правильную структуру контроллера YII2?

Всем привет!
Такой вопрос. Реализовываю проект на yii2 и собсна появилась неудивительная необходимость создавать вложенные пути страниц. К примеру /settings/user/data/info или /settings/user/data где по логике своей контроллер это settings.
Я на данный момент делаю так, через роутинг настроил чтобы всегда в ДАННОМ случае переадресовывалось на контроллер settings и в него передавались параметры где user это $url, data это $cat, info это $cat2.
И в контроллере уже через условия определяю откуда пришло и куда отправлять.... Так то вроде все классно, но как-то меня это смущает)
Правильно ли я делаю в данном случае или нет? Как вообще при различной вложенности выстраивать работу в контроллере?
  • Вопрос задан
  • 222 просмотра
Решения вопроса 1
vitaly_74
@vitaly_74
можно как вы предложили - но, имейте ввиду что появись у вас с десяток экшенов вы наврядли сможете быстро править/модернизировать код или искать ошибку в случае чего (просто потому что на поиск правильного экшена у вас уйдет нормльно так времени).
можно разделять по контроллерам. но опять же - слишком много контроллеров и получится неплохой такой монолит. Но это если у вас вложенность экшенов не большая (setting/user/id)
а можно как предложил товарищ выше - организовать все по модулям. как по мне самый правильный вариант.

данную структуру что вы описали можно использовать когда у вас всего 3-4 экшена и в них не долго разобраться. а в основном лучше через модули (если экшенов и контроллеров много)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@KingstonKMS
Вы можете использовать модули, это с одной стороны разделяет приложение на части, с другой - прибавляет сложности проекту.
Ответ написан
Exebeche
@Exebeche
Осваиваю программирование
Еще только учусь, но..
Кажется пути настраиваются в правилах UrlManager-а.
Нужно покурить про него и создать правила в соответствии с Вашими нуждами.
Ну и всегда можно сделать кучу контроллеров включая вложенные директории и пути соответственно изменятся без правил урл менеджера
Ответ написан
Ваш ответ на вопрос

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

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