lloydm2
lloydm2

Reputation: 23

ZF2 Redirect to route with controller action and get param

So I'm trying to redirect my code to another action within a controller http://localhost/salesorder/view?id=5509c273f948e7cf068b456a this view action is working fine. But every time the redirect code runs it redirects me to http://localhost/salesorder?id=5509c273f948e7cf068b456a

I am now clueless what is did I do wrong.

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

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

return $this->redirect()->toRoute('Salesorder', $params, $options);

My moduleconfig looks like this

        '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'
                        ),
                    ),
                ),  
            ),
        ),  

Upvotes: 2

Views: 6782

Answers (1)

Conti
Conti

Reputation: 1273

Excuse me that I cannot put a comment since I have not enough reputation, but this may lead you to a solution:

First of all fix the toroute function call to this:

return $this->redirect()->toRoute('Salesorder', array('id'=> (string) $orderId));

Then fix the route specification to this:

'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',
         ),
     ),
),

Upvotes: 1

Related Questions