【问题标题】:Why is the request routed to getAction by default > Zend Framework为什么请求默认路由到getAction > Zend Framework
【发布时间】:2011-04-01 09:34:52
【问题描述】:

我正在开发一个 zend 框架应用程序,令我惊讶的是,默认路由没有按预期工作。这是我的网址:

http://localhost/zend_app/public/index/test

它应该路由到 default 模块中的 index 控制器 > test 动作。但它没有按预期工作。

当我打印请求参数时,我得到的操作是“get”,id 是“test”。

array (
  'controller' => 'index',
  'action' => 'get',
  'id' => 'test',
  'module' => 'default'
)

仅供参考,我在引导文件中配置了某些正则表达式路由,如下所示:

protected function _initRestRoute()
    {
        require_once 'Zend/Controller/Front.php';    
        require_once 'Zend/Controller/Router/Route.php';

        $ctrl  = Zend_Controller_Front::getInstance();
        $router = $ctrl->getRouter();

$router->addRoute(
            'route2',
            new Zend_Controller_Router_Route_Regex(
                                            'api/([^-]*)/([^-]*)\.([^-]*)', 
                                            array(
                                            'action' => 'index'
                                            ),
                                            array(
                                                1 => 'module',
                                                2 => 'controller'
                                            )
        ));

}

但没有一条路线与我上面的网址匹配。 我不明白可能是什么问题。

【问题讨论】:

  • 您有自定义路线吗?
  • 是的,我已经在我的“默认”模块的引导程序中定义了一些自定义路由,使用正则表达式路由。但我希望这些模式都不符合上述网址。
  • @dskanth。你能发布路线吗?
  • @Marcin:我已经用示例路线更新了我的问题。所有路由都以“api/”模式开头。但我希望这些自定义路由都不匹配我的网址:localhost/zend_app/public/index/test
  • @dskanth。 ZF 似乎认为“测试”是“获取”操作的 id 参数。如果你除了 form api 没有任何其他路由,那么我不知道发生了什么。

标签: php zend-framework


【解决方案1】:

仔细阅读Zend Rest Route下的注释。

Zend Rest Route 旨在简化 RESTful 应用程序,并根据 URL 和请求方法路由请求。

在这种情况下,您正在向索引控制器下的项目“test”发出 GET 请求。

【讨论】:

  • 但我不明白为什么默认的 zend 路由在我的 url 中不起作用。因为我认为 Zend 中的 url 模式将匹配(默认情况下):....../controller/action。而且我的网址也不匹配任何正则表达式路由......(即使在那里,我也将操作指定为索引,而不是获取)
  • 我认为 Zend_Rest_Route 优先于所有其他路由(首先测试匹配),但您必须仔细阅读文档并进行测试。
  • 是的,我也有同感。当我在 application.ini 中注释掉该行(但希望它不需要)resources.router.routes.rest.type = Zend_Rest_Route 时,它按预期工作:)
猜你喜欢
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多