Zend Framework 2:Router \ Exception“部分路由可能无法终止”

时间:2012-08-22 07:50:40

标签: php router zend-framework2

尝试通过调用

组装路线时
return $this->redirect()->toRoute('application');

在我的控制器中我得到以下异常:

Zend\Mvc\Router\Exception\RuntimeException
File: library\Zend\Mvc\Router\Http\Part.php:181
Message: Part route may not terminate

路由配置如下:

    'routes' => array(
        'application' => array(
            'type' => 'Segment',
            'options' => array(
                'route' => '/[:controller[/[:action[/]]]]',
                'constraints' => array(
                    'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                ),
                'defaults' => array(
                    '__NAMESPACE__' => 'Application\Controller',
                    'controller' => 'Index',
                    'action' => 'index',
                ),
            ),
            'child_routes' => array(
                'wildcard' => array(
                    'type' => 'Wildcard',
                ),
            ), 
        ),
    ),

是否需要将controller/action路由作为路由/的子路由? 当我配置它就像它的工作原理。当我使用路由[/[:controller[/[:action[/]]]]](带有可选的前导斜杠)时,它适用于某些程序集但不适用于所有程序集,它们都以上述方式调用,部分来自其他模块。

1 个答案:

答案 0 :(得分:3)

错误已经告诉您问题:您在当前路线中缺少may_terminate选项。因此,您不能short-circuit返回redirect()插件返回值。

只需添加一个

'may_terminate' => true

到您的路线配置(可能是所有路线配置)。