Zend Framework 2,只有路由有子路由时,查询路由才会失败

时间:2013-03-28 11:19:58

标签: zend-framework2 zend-route

自2.1.4以来,不推荐使用查询路由,我将这样路由到我的博客:

        'cro-blog' => array(
            'type' => 'Literal',
            'options' => array(
                'route' => '/blog',
                'defaults' => array(
                    'controller' => 'CroBlog\BlogController',
                    'action'     => 'index',
                ),
            ),
        ),

并链接到/blog?p=x等网页,其中x是页码。在我添加子路由之前,这非常有效。链接到/blog仍然有效,但链接到页面会产生404(更具体的'请求的URL无法通过路由匹配'。)。这是我目前的设置:

        'cro-blog' => array(
            'type' => 'Literal',
            'options' => array(
                'route' => '/blog',
                'defaults' => array(
                    'controller' => 'CroBlog\BlogController',
                    'action'     => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'post' => array(
                    'type' => 'Segment',
                    'options' => array(
                        'route' => '/:slug',
                        'constraints' => array(
                            'slug' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                            'action' => 'post',
                        ),
                    ),
                ),
            ),
        ),

我正在使用Segment子路由,但Literal子路由存在同样的问题。

任何保持页面查询和子路由的方法吗?

1 个答案:

答案 0 :(得分:0)

这已经解决了。如果有人遇到同样的问题,这对我有用。

  • 清除所有缓存(EdpSuperluminal,APC等)
  • 删除Zend库
  • 在没有Zend库的情况下运行您的应用程序(当然会给出大量错误,但这对我来说似乎至关重要)
  • 重新安装Zend库
  • 再次运行您的应用程序

我安装了2.1.5dev并解决了这个问题。想要确定它是否是一个错误,所以再次尝试2.1.4并且问题仍然是固定的。所以这是我的结论。缓存可能是一件奇怪的事情。

编辑过早地跳到(错误的)结论。解雇了Zend Studio 10,现在再次出现问题。我认为Zend Studio 10正在恢复一些文件(不是所有文件,因为查询路由确实被标记为已弃用)。不过,考虑到这个解决了,只需找到一种方法告诉Zend Studio 10使用2.1.4。谢谢!