我需要对多模块 Phalcon 应用程序的路由有一些了解
I need some understanding of the routing of a multi module Phalcon application
我需要一些关于多模块 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
您缺少默认控制器的路线,操作:
$router->add("/api/:controller", array(
'module' => 'api',
'controller' => 1,
'action' => 'index',
));
$router->add("/api", array(
'module' => 'api',
'controller' => 'index',
'action' => 'index',
));
Phalcon 需要严格指定路由,否则不会解析它们。我们为路由的高性能付出了这个代价。
尝试设置命名空间
'namespace' => 'App\Modules\Api\Controllers']
您的第一个模式是一个包罗万象的模式,它将所有路由发送到管理控制器。您是否尝试过将管理模块路由放在末尾?
或者,您可以使用包含模块的模式:
$router->add("/:module/:controller/:action/:params", array(
'module' => 1,
'controller' => 2,
'action' => 3,
'params' => 4
));
我需要一些关于多模块 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
您缺少默认控制器的路线,操作:
$router->add("/api/:controller", array(
'module' => 'api',
'controller' => 1,
'action' => 'index',
));
$router->add("/api", array(
'module' => 'api',
'controller' => 'index',
'action' => 'index',
));
Phalcon 需要严格指定路由,否则不会解析它们。我们为路由的高性能付出了这个代价。
尝试设置命名空间
'namespace' => 'App\Modules\Api\Controllers']
您的第一个模式是一个包罗万象的模式,它将所有路由发送到管理控制器。您是否尝试过将管理模块路由放在末尾?
或者,您可以使用包含模块的模式:
$router->add("/:module/:controller/:action/:params", array(
'module' => 1,
'controller' => 2,
'action' => 3,
'params' => 4
));