Php ZF2重定向到带有控制器操作的路由并获取参数

Php ZF2重定向到带有控制器操作的路由并获取参数,php,zend-framework2,Php,Zend Framework2,因此,我试图将代码重定向到控制器中的另一个操作。该视图操作工作正常。但每次重定向代码运行时,它都会将我重定向到 我现在不知道我做错了什么 $params = ['controller' => 'SalesOrder', 'action' => 'view', ]; $options = ['query' => ['id' => (string) $orderId]]; return $this->redire

因此,我试图将代码重定向到控制器中的另一个操作。该视图操作工作正常。但每次重定向代码运行时,它都会将我重定向到

我现在不知道我做错了什么

$params = ['controller' => 'SalesOrder',
           'action'     => 'view',
            ];

$options = ['query' => ['id' => (string) $orderId]];

return $this->redirect()->toRoute('Salesorder', $params, $options);
我的moduleconfig看起来像这样

        'Salesorder' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/salesorder',
                'defaults' => array(
                    '__NAMESPACE__' => 'Backend\Controller',
                    'controller'    => 'SalesOrder',
                    'action'        => 'new',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'default' => array(
                    'type' => 'Segment',
                    'options' => array(
                        'route' => '[/:action]',
                        'constraints' => array(
                            'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                            'action' => 'new'
                        ),
                    ),
                ),  
            ),
        ),  

请原谅,我不能发表评论,因为我没有足够的声誉,但这可能会导致您找到一个解决方案:

首先,修复对以下对象的toroute函数调用:

return $this->redirect()->toRoute('Salesorder', array('id'=> (string) $orderId));
然后将路由规范固定到以下位置:

'Salesorder' => array(
     'type' => 'segment',
     'options' => array(
         'route' => '/MODULE_NAME/SalesOrder/new/:id[/]',
         'constraints' => array(
             'id' => '[a-zA-Z0-9_-]*'
             ),
         'defaults' => array(
             'controller' => 'MODULE\Controller\SalesOrder',
             'action' => 'new',
         ),
     ),
),

您的子路由是
salesforder/default
,请尝试在那里重定向,而不是直接重定向到URL$这个->重定向()->toUrl(');返回$this->redirect()->toRoute('ControllerName',array('action'=>'your_action','key'=>$key));应该有用