ZF2儿童路线不起作用

时间:2015-04-10 17:20:52

标签: php routing zend-framework2 zend-route zend-router

我在模块Blog中有一个简单的配置和控制器:

module.config.php:

return array(
    'controllers'=>array(
        'invokables'=>array(
            'Blog\Controller\Blog'=>'Blog\Controller\BlogController',
        ),
    ),
    'router'=>array(
        'routes'=>array(
            'blog'=>array(
                'type'=>'literal',
                'options'=>array(
                    'route'=>'/blog',
                    'defaults'=>array(
                        'controller'=>'Blog\Controller\Blog',
                        'action'=>'index',
                    ),
                ),
                'may_terminate'=>true,
                'child_routes'=>array(
                    'rss'=>array(
                        'type'=>'literal',
                        'options' => array(
                            'route'=>'/rss',
                            'defaults'=>array(
                                'action'=>'rss',
                            ),
                        ),
                    ),
                )
            )
        )
    ),
);

BlogController.php:

namespace Blog\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class BlogController extends AbstractActionController
{
    public function indexAction(){
        return new ViewModel(array());
    }

    public function rssAction(){
        return new ViewModel(array());
    }
}

路线 /博客正常运作,

/ blog / rss - 无效

Zend Framework 2响应,错误消息:

A 404 error occurred
Page not found.
The requested controller was unable to dispatch the request.
Controller:
    Blog\Controller\Blog
No Exception available

怎么了? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您在“blog / rss”路线中没有may_terminate设置为true,就像在其父级中一样。

答案 1 :(得分:0)

问题在于matchRouteName。

使用child_routes

  

protected'matchedRouteName'=>字符串'blog / rss'(长度= 8),

没有child_routes

  

protected'matchedRouteName'=>字符串'blog'(长度= 4)

当我尝试访问/ blog / rss时,它会在路由处理中生成错误并重定向到404页面。