0

我需要一些关于多模块 Phalcon 应用程序的帮助。我按照https://github.com/phalcon/mvc/tree/master/multiple的说明进行操作,但无法使变量路由适用于非默认模块。

$router = new Router();
$router->setDefaultModule("admin");
$router->setDefaultAction('index');

这适用于admin模块:

$router->add("/:controller/:action/:params", array(
    'module' => 'admin',
    'controller' => 1,
    'action' => 2,
    'params' => 3
));

这仅适用于api手动设置的模块(非默认模块):

$router->add("/api", array(
    'module' => 'api',
    'controller' => 'index'
));

$router->add("/api/user", array(
    'module' => 'api',
    'controller' => 'user',
    'action' => 'index'
));

但这不适用于api模块:

$router->add("/api/:controller/:action/:params", array(
    'module' => 'api',
    'controller' => 1,
    'action' => 2,
    'params' => 3
));

然后,当我使用 /api 或 /api/user 时,会出现如下错误:

\www\site\public\index.php:104:string 'admin\controllers\ApiController handler class cannot be loaded'

但是当我访问 /api/user/index 时它可以工作。看起来它忘记了非默认模块setDefaultAction

4

3 回答 3

0

您缺少默认控制器的路由,操作:

$router->add("/api/:controller", array(
    'module' => 'api',
    'controller' => 1,
    'action' => 'index',
));
$router->add("/api", array(
    'module' => 'api',
    'controller' => 'index',
    'action' => 'index',
));

Phalcon 需要严格指定路由,否则它不会解决它们。我们为路由的高性能付出了这个代价。

于 2016-08-13T16:47:34.650 回答
0

尝试设置命名空间

'namespace' => 'App\Modules\Api\Controllers']
于 2017-08-10T11:45:33.960 回答
0

您的第一个模式是一个包罗万象的模式,它将所有路由发送到管理控制器。您是否尝试过将管理模块路由放在最后?

或者,您可以使用包含该模块的模式:

$router->add("/:module/:controller/:action/:params", array(
    'module' => 1,
    'controller' => 2,
    'action' => 3,
    'params' => 4
));
于 2017-08-17T16:35:55.673 回答