2012-05-18 12 views
12

Ho seguito reindirizza script nella mio controller (Zend Framework 2)Impostare il parametro url in reindirizzamento in Zend Framework v2

return $this->redirect()->toRoute('default', array(
         'controller' => 'admin', 
         'action' => 'index' 
)); 

Attualmente reindirizzamento a localhost/zf2/public/admin/index

Come posso reindirizzare con un parametro in più?

come:

localhost/zf2/public/admin/index/update/1

o localhost/zf2/public/admin/index/page/2

Ho provato questo:

return $this->redirect()->toRoute('default', array(
         'controller' => 'admin', 
         'action' => 'index' 
          'param' => 'updated/1' 
         )); 

Ma viene reindirizzato a localhost/ttacounting/public/admin/index/updated%2F1

risposta

18

Questo sta funzionando. Lo script percorso

$this->redirect()->toRoute('myaccount', array(
    'controller' => 'admin', 
    'action' => 'index', 
    'param1' =>'updated', 
    'param2'=>'1' 
)); 

Quindi, impostando il parametro in module.config.php

'myaccount' => array(
    'type' => 'Segment', 
    'options' => array(
    'route' => '/myaccount[/:action][/:param1][/:param2]', 
    'defaults' => array(
      'controller' => 'Main\Controller\MyAccount', 
      'action'  => 'index', 
     ), 
    ), 
), 

Questo vi porterà a MyAccountController, indexAction con param1 = 'aggiornata' e param2 = '1'. Ma nel tuo caso di esempio, l'azione dovrebbe essere aggiornata con il nome parametro 'update' e il valore del parametro '1'

+0

Questo funziona. Vorrei notare, tuttavia, che non è necessario specificare il controller nella matrice. Il percorso che hai impostato in module.config.php fa questo per te. Hai solo bisogno dell'azione e dei parametri corretti. – spetz83

8

Questo funziona per me.

Il percorso:

'user_view' => array(
    'type' => 'Segment', 
    'options' => array(
     'route' => '/user/view[/:user_id]', 
     'defaults' => array(
      'controller' => 'user', 
      'action'  => 'viewUser', 
     ), 
    ), 
), // End of user_view route 

E il reindirizzamento dal controller:

return $this->redirect()->toRoute('user_view', array('user_id'=>$user_id)); 

Si noti che la chiave di matrice nell'istruzione reindirizzamento rispecchia il segmento percorso: [/: user_id] = 'user_id' => $ user_id

+0

vi ringrazio molto im andando a controllare questo oggi –

1

Questa dichiarazione reindirizza a localhost/leads/edit/112345:

return $this->redirect()->toRoute('leads', array(
       'action' => 'edit', 
       'id' => 112345 
      )); 

id è il parametro che mi aspetto in editAction.

Spero che aiuti.

0

Prova questa rotta al posto del tuo precedente esempio

return $this->redirect()->toRoute('default', [ 
    'controller' => 'admin', 
    'action' => 'index' 
    'updated' => '1' 
]); 
0

Ho provato alcuni dei suddetti soluzioni ma nessuno di loro ha funzionato per me. Sono venuto con il seguente.

//Return to specific product pricing 
return $this->redirect()->toRoute('showpricing', array('id' => $form_values['id'])); 


    /* show pricing */ 
      'showpricing' => array(
       'type' => 'Zend\Mvc\Router\Http\Segment', 
       'options' => array(
        'route' => '/product/showpricing[?id=:id]', 
        'defaults' => array(
         'controller' => 'Product\Controller\Product', 
         'action'  => 'showpricing', 
       ) 
      ) 
     ), 

Spero che questo aiuti qualcuno.

0

Un altro modo è quello di passare come un terzo parametro (testato su ZF3), invece di aggiornare il percorso:

$this->redirect()->toRoute('dashboard', [], ['query' => ['welcome' => 1]]); 
Problemi correlati