We have moved our forum to GitHub Discussions. For questions about Phalcon v3/v4/v5 you can visit here and for Phalcon v6 here.

Мультимодульное приложение/Multi-Module app

Всем добрый вечер, подскажите пожалуйста как правильно реализовать начальный код(скелетон?) для такой структуры, есть два начальных контроллера - backend и frontend, каждый может иметь свои модули со своими контроллерами, моделями, представлениями. По структуре это выглядит примерно так:

//Google Translate

Hi all, please tell me how to implement the initial code (skeleton?) For such a structure, there are two primary controller - backend and frontend, everyone can have their modules with their controllers, models, views. According to this structure looks like this:

edited Jan '15

Check this one - MVC Multimodular

thanks, i read documentation before ask question, but i think this not what i need :(

Почему? Сформулируйте, что вас не устраивает.

Почему? Сформулируйте, что вас не устраивает.

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

Вдруг поможет https://github.com/ovr/phalcon-module-skeleton

Спасибо, это тоже смотрел :) Но опять же это ничем не отличается от примера тот что в документации, насколько я понял.

Т.е. в чем суть, я хочу разделить само приложение как бы на две части - frontend+backend, каждая из которых может иметь свои модули, при этом сам модуль разделен соотвественно на 2 части - frontend+backend, ну и одна из этих частей модуля может вообще отсутствовать, к примеру в модуле может быть только часть для backend или наооборот.

Минимальная затрата ресурство - Opcache. То, что вы хотите сделать это HMVC, между ними есть Sever-Client, Server-Server взаимодействие. В вашем случае вы хотите Server-Server, никто вам не мешает это сделать с помощью той документации, которую я вам кинул выше.

Каждый модуль в ней, может иметь свой ACL, свои настройки авторизации и т.д. и т.п. Запрашивать один контроллер из "другого" - это плохой тон, и неявно. Если вам нужна модульность, и надо будет вызывать какой-то код в не зависимости от модуля - вынесите это все в библиотеку.

Минимальная затрата ресурство - Opcache. То, что вы хотите сделать это HMVC, между ними есть Sever-Client, Server-Server взаимодействие. В вашем случае вы хотите Server-Server, никто вам не мешает это сделать с помощью той документации, которую я вам кинул выше. Каждый модуль в ней, может иметь свой ACL, свои настройки авторизации и т.д. и т.п. Запрашивать один контроллер из "другого" - это плохой тон, и неявно. Если вам нужна модульность, и надо будет вызывать какой-то код в не зависимости от модуля - вынесите это все в библиотеку.

Спасибо, просто я не совсем понимаю как это должно выглядеть в коде, к примеру есть начальных два модуля - backend/frontend, а как к ним подмодули прикреплять, не соображу.

P.S: Сделал пока что на контроллерах, без модулей, т.е. изначально два контроллера - для backend/frontend, от них через наследование вроде модулей, только вот пока представления для backend/frontend собрать не могу в кучу, да и не уверен что мой подход правильный в данном случае...

И какие в этом случае у вас будут подмодули во фронтэнде и бэкэнде? По мне, так не нужно разделать на фронт/бэк с подмодулями, просто делать модули общим списком (собственно я так и делаю)

И какие в этом случае у вас будут подмодули во фронтэнде и бэкэнде? По мне, так не нужно разделать на фронт/бэк с подмодулями, просто делать модули общим списком (собственно я так и делаю)

А как вы отделяете пользовательскую часть от админки в данном случае ?

Я думаю сделать оболочку(frontend/backend), вроде каркаса, ну а подмодули какие понадобятся, хочу как можно более гибкое приложение получить в этом плане, к примеру ту же систему пользователей и т.д., т.е. изначально это должен быть только каркас, который будет наполняться непосредственно за счет модулей.

edited Jan '15

В каждом модуле должны быть админские контроллеры, которые админят данные этого модуля. Ничто не мешает сделать у урл у этих контроллеров общие префикс /admin

Модули должны быть разделены по группам данных. Например: Пользователи, Товары, Статьи

В каждом модуле должны быть админские контроллеры, которые админят данные этого модуля. Ничто не мешает сделать у урл у этих контроллеров общие префикс /admin

Модули должны быть разделены по группам данных. Например: Пользователи, Товары, Статьи

А как же DRY ? За что мне не нравятся модули в Phalcon, так это то что в каждом модуле нужно прописывать все по новой - роуты и т.д. Т.е. по сути каждый модуль, это отдельное приложение получается...

edited Jan '15

Я использую роуты в аннотациях, не так напрягает. По dry - тогда только писать модуль - универсальную админку, как в джанго:)

Т.е. по сути каждый модуль, это отдельное приложение получается...

Бинго! В этом и суть. Причем в фальконе они сейчас еще недостаточно автономные



6.7k
Accepted
answer
edited Jan '15

Всем спасибо за помощь, выбрал за основу HMVC