【问题标题】:I need some understanding of the routing of a multi module Phalcon application我需要对多模块 Phalcon 应用程序的路由有所了解
【发布时间】:2016-08-11 21:48:38
【问题描述】:

我需要一些关于多模块 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

【问题讨论】:

    标签: phalcon phalcon-routing


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的,清楚。但是为什么它会像上面所说的那样适用于默认模块呢?
    • 我怀疑这可能是一个错误。请在 phalcon 的 github 上将此问题报告为问题
    【解决方案2】:

    尝试设置命名空间

    'namespace' => 'App\Modules\Api\Controllers']
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-29
        • 1970-01-01
        • 1970-01-01
        • 2016-09-27
        • 2013-11-25
        • 1970-01-01
        • 2017-11-04
        • 2012-09-03
        相关资源
        最近更新 更多