Как быть, если необходимо в одном модуле zf2 иметь несколько моделей/контроллеров?

Привет

Такая ситуация: необходим модуль новостей, у каждой новости должна быть категория — в одну модель все это не запихаешь, но это и не 2 разных модуля, то есть нам надо запихать в один модуль несколько моделей и контроллеров.

Было бы глупо, если бы это было бы невозможно, да и вообще, я, кажется, видел в каком-то из модулей структуру с несколькими моделями, но не очень втыкаю как это сделать и будут ли подводные камни.

Я правильно понимаю, что в данном случае, мне нужно построить что-то такое:
Будет файл с моделью Categories, будет файл с моделью News. В конфиге модуля мы подключим 2 этих модели. В плане контроллеров будет примерно тоже самое. CategoriesController и NewsController. В первом будем добавлять, удалять, изменять категории (просматривать не надо, нам не надо просматривать список контроллеров, кстати, в таком случае какой дефолтный route указать?). Во втором случае немного посложнее: удаление, изменение, предпросмотр (для админа), а так же просмотр всех новостей и просмотр полной новости (для юзера). Все это будет связано с админкой, в которой будут прописаны пути, которые будут вызывать нужные контроллеры и действия.

Описал как, по моему скромному мнению, все должно работать. Вот.

Вопросы:

Правильно ли я понимаю как и что мне нужно сделать? Я говорю в общем, про структуру.

Если да, то:

1. Для контроллера категорий какой дефолтный путь надо указать? Хотя стоп! Ведь мы указываем путь для модуля, а не для контроллера. В таком случае нам не надо запариваться с дефолтными путями для категорий, ибо дефолтный путь будет задан для всего модуля и это будет путь, который вызовет список новостей. Правильно?
2. Правильно ли будет так подключать эти модули в админке. Я полагал пути будут такими (для админки):
/admin/news/ (список новостей для администрирования)
/admin/news/edit/##
/admin/news/categories/ (список категорий для администрирования)
/admin/news/categories/add

В таком случае, в конфиге админ панели при настройке путей мне надо писать что-то такое:
Для пути news/edit/ вызовем контроллер новостей, edit action
Для пути news/categories/add вызовем контроллер категорий, add action


Как-то костыльно выглядит (некрасиво это писать полный путь много-много раз, воть), правильно ли я понимаю, что это нужно делать так?
  • Вопрос задан
  • 2933 просмотра
Пригласить эксперта
Ответы на вопрос 1
cawakharkov
@cawakharkov
По-моему вы не поняли как работают роуты в зф2, зачем что-то лишнее писать, достаточно например роута:
'route' => '/admin[/[:controller[/[:action][/:id]]]]',


И что плохого в нескольких моделях в одном модуле, почитайте несколько постов о них, раз, два.
Для админки лучше сразу делать отдельный модуль.
Всё равно вся логика должна быть в сервисах(и еще пример) и не важно откуда вы их будите вызывать из модуль новости или админки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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