Machez
@Machez
Бу!

Как в Zend Framework 3 организовать несколько зависимых проектов?

Начну с аналогии. Есть такой фреймворк Yii2 и при его установки через composer в варианте advanced сразу разворачивается вся необходимая структура каталогов.

composer create-project --prefer-dist yiisoft/yii2-app-advanced yii-application

  • Каталог frontend - публичная часть сайт (frontend/public - в него смотрит домен mysite.domain).
  • Каталог backend - сюда сразу можно вешать например админку (каталог backend/public - в него смотрит домен admin.mysite.domain).
  • Остальные каталоги - это уже движок и т.п.


Каталоги backend и frontend содержат внутри себя свои контроллеры, модели и представления...

Если нужно добавить еще один скажем так "подпроект", например - блог, то мы просто создаем директорию blog на том же уровне, где лежат backend и frontend, заводим в новой директории нужную внутреннюю структуру каталогов (для представлений, контроллеров, моделей), ассоциируем домен blog.mysite.domain с директорией blog/public и немного корректируем конфиги фреймворка и роутинг - всё.

Теперь сам вопрос.

Как организовывается такая распределенная структура каталогов в фреймворке Zend Framework 3?

Проект один, но некоторые его части (например, админка, блог и еще что-нибудь) должны быть вынесены на поддомены. Хочется правильно понять как организовать роутинг между подпроектами и как разделять MVC проектов. Документацию разумеется читаю. Но пока не могу свести всё воедино. Буду рад подсказкам и ссылкам на информацию по данному вопросу.
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
Afinogen
@Afinogen
PHP разработчик
Как пример создаете модуль, например Crm, домашнюю директорию делаете на /public проекта.
И в конфиге модуля делаете такой маршрут
'crm-subdomain' => [
                'type'          => Hostname::class,
                'options'       => [
                    'route'    => 'crm.localhost',
                    'defaults' => [
                        'controller' => Controller\IndexController::class,
                        'action'     => 'index',
                    ]
                ],
                'may_terminate' => true,
                'child_routes'  => [
                    'index'          => [
                        'type'    => Segment::class,
                        'options' => [
                            'route'       => '[/:action][/]',
                            'constraints' => [
                                'action' => '[a-z0-9\-]+',
                            ],
                            'defaults'    => [
                                'controller' => Controller\IndexController::class,
                                'action'     => 'index',
                            ]
                        ]
                    ],

По типу Hostname, будут отсеиваться маршруты, дальше идет маршрутизация через child_routes.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@novrm
Вам нужно смотреть в сторону модулей типа LosDomain.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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