Phalcon многомодульные маршруты для других модулей

Я использую Phalcon php. Я должен попытаться использовать многомодульная архитектура. У меня есть фронтенд и бэкэнд. Приложение внешнего интерфейса является модулем по умолчанию. Но я не понимаю что-то о других модулях. Если у меня есть 50 контроллеров в бэкэнде с 10 действиями контроллеров, я должен определить все маршруты для внутреннего модуля?

0

Решение

Для ваших внутренних маршрутов вам не нужно определять более 50 различных маршрутов, чтобы соответствовать всем вашим комбинациям контроллер / действие. В основном вы можете придерживаться маршрутов по умолчанию, предоставляемых Phalcon.

Это пример, который может соответствовать вашим потребностям. Я не уверен, какова ваша точная структура проекта. Но, исходя из приведенного вами примера, попробуйте это:

$router = new Phalcon\Mvc\Router();

// set the defaults, so Phalcon knows where to start and where to fall back to
$router->setDefaultModule('frontend');
$router->setDefaultNamespace('Apps\Frontend\Controllers');
$router->setDefaultAction("index");
$router->setDefaultController("index");

$router->removeExtraSlashes(true);

/* ----------------------------------------------------- */
/* ------------------ FRONTEND ROUTES ------------------ */
/* ----------------------------------------------------- */

$router->add('/([a-zA-Z\-]+)/([a-zA-Z\-]+)/:params', [
'module'     => 'frontend',
'namespace'  => 'Apps\Frontend\Controllers',
'controller' => 1,
'action'     => 2,
'params'     => 3
]);/* ----------------------------------------------------- */
/* ------------------ BACKEND ROUTES ------------------- */
/* ----------------------------------------------------- */
// to keep your routes.php file clean,
// you can create a separate router group for your backend routes.

$backend = new Phalcon\Mvc\Router\Group();
$backend->setPrefix('/backend');

// for a backend route with a controller
$backend->add('/([a-zA-Z\-]+)', [
'module'     => 'backend',
'namespace'  => 'Apps\Backend\Controllers',
'controller' => 1,
'action'     => 'index'
]);

// for a backend route with a controller/action
$backend->add('/([a-zA-Z\-]+)/([a-zA-Z\-]+)', [
'module'     => 'backend',
'namespace'  => 'Apps\Backend\Controllers',
'controller' => 1,
'action'     => 2
]);

// for a backend route with a controller/action/parameter
$backend->add('/([a-zA-Z\-]+)/([a-zA-Z\-]+)/:params', [
'module'     => 'backend',
'namespace'  => 'Apps\Backend\Controllers',
'controller' => 1,
'action'     => 2,
'params'     => 3
]);

// add your backend routes to the main router.
$router->mount($backend);
4

Другие решения

Я использую тот же сценарий, что и вы. Нет необходимости определять все возможные маршруты. Вот мои маршруты, и они универсальны для всего, что мне нужно в области CMS:

// Frontend routes
// ....

// CMS Routes
$router->add('/cms', [
'module' => 'backend',
'controller' => 'admin',
'action' => 'login'
]);

$router->add('/cms/:controller/:action/([0-9]+)/:params', [
'module' => 'backend',
'controller' => 1,
'action' => 2,
'id' => 3,
'params' => 4
])->setName('backend-full');

$router->add('/cms/:controller/:action', [
'module' => 'backend',
'controller' => 1,
'action' => 2
])->setName('backend-short');

$router->add('/cms/:controller', [
'module' => 'backend',
'controller' => 1,
'action' => 'index'
]);
1

По вопросам рекламы [email protected]