PHP Phalcon Wild карта маршрутизации в многомодульном приложении

ОБНОВИТЬ Это теперь исправлено с этим решением.

    foreach (array('core', 'backend' => array('alias' => 'admin'), 'api') as $module => $options) {

// If an alias is set use that
if (isset($options['alias']) && !empty($options['alias'])) {
$module = $options['alias'];
}

// If module is an int then $options contains the module name
if (is_int($module)) {
$module = $options;
}

$group = new \Phalcon\Mvc\Router\Group(array(
'module' => $module,
));

$group->setPrefix('/' . (isset($options['alias']) ? $options['alias'] : $module));

// Allow camel case controller and action name that will be accessed via dashes
$group->add('/([a-zA-Z\-]+)/([a-zA-Z\-]+)/:params', array(
'controller' => 1,
'action' => 2,
'params' => 3
))->convert('action', function($action) {
return \Phalcon\Text::lower(\Phalcon\Text::camelize($action));
});

// Mount a group of routes for some module
$router->mount($group);
}

Вот мой роутер в моем файле app / Bootstrap.php

protected function router()
{

$this->di->set('router', function() {
$router = new Router(false);

$router->setDefaults(array(
'module' => $this->config->router->default->module,
'controller' => $this->config->router->default->controller,
'action' => $this->config->router->default->action
));

/*
* All defined routes are traversed in reverse order until Phalcon\Mvc\Router
* finds the one that matches the given URI and processes it, while ignoring the rest.
*/
$frontend = new \Phalcon\Mvc\Router\Group(array(
'module' => 'frontend',
));

// Allow camel case controller and action name that will be accessed via dashes
$frontend->add('/([a-zA-Z\-]+)/([a-zA-Z\-]+)/:params', array(
'controller' => 1,
'action' => 2,
'params' => 3
))->convert('action', function($action) {
return \Phalcon\Text::lower(\Phalcon\Text::camelize($action));
});

// Mount a group of routes for frontend
$router->mount($frontend);

/**
* Define routes for each module
*/
//foreach ($this->getModules() as $module => $options) {
foreach (array('core', 'backend' => array('alias' => 'admin'), 'api') as $module => $options) {
$group = new \Phalcon\Mvc\Router\Group(array(
'module' => $module,
));

$group->setPrefix('/' . (isset($options['alias']) ? $options['alias'] : $module));

// Allow camel case controller and action name that will be accessed via dashes
$group->add('/([a-zA-Z\-]+)/([a-zA-Z\-]+)/:params', array(
'controller' => 1,
'action' => 2,
'params' => 3
))->convert('action', function($action) {
return \Phalcon\Text::lower(\Phalcon\Text::camelize($action));
});

// Mount a group of routes for some module
$router->mount($group);
}

return $router;
});
}

Вот моя структура каталогов:
http://pastie.org/9709545

Мои проблемы, когда я иду в http://example.com/api/sms/send он дает мне страницу 404 (попадает в frontend / Module.php, когда он должен попасть в api / v1.0.x / Module.php)

Когда у меня есть SmsController -> отправить действие?

Кто-нибудь знает, как правильно маршрутизировать несколько модулей?

Спасибо

3

Решение

Задача ещё не решена.

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

Других решений пока нет …

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