1

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

模块.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',
                            ),
                        ),
                    ),
                )
            )
        )
    ),
);

博客控制器.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工作正常,

但是/blog/rss - 不起作用

Zend Framework 2 响应错误消息:

发生 404 错误
网页未找到。
请求的控制器无法分派请求。
控制器:
    博客\控制器\博客
没有可用的例外

怎么了?提前致谢。

4

2 回答 2

0

问题出在matchedRouteName。

使用 child_routes

protected 'matchedRouteName' => string 'blog/rss' (length=8),

没有 child_routes

protected 'matchedRouteName' => string 'blog' (length=4)

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

于 2015-04-17T16:35:13.903 回答
0

您没有像在其父级中那样在“blog/rss”路由中may_terminate设置。true

于 2015-04-11T17:35:12.617 回答