2013-03-08 20 views
9

Come posso reindirizzare a un altro modulo?Zend Framework 2 Reindirizzamento

return $this->redirect()->toRoute(null, array(
    'module'  => 'othermodule', 
    'controller' => 'somecontroller', 
    'action'  => 'someaction' 
)); 

Questo non sembra funzionare, qualche idea?

+2

Se stai reindirizzando, reindirizzare a un nome-percorso. Se vuoi semplicemente inviare un'altra azione, usa l'helper forward(). Vedi http://framework.zend.com/manual/2.1/en/modules/zend.mvc.plugins.html – Sam

risposta

24

Questo è quanto ho reindirizzare dal mio controller a un altro percorso:

return $this->redirect()->toRoute('dns-search', array(
    'companyid' => $this->params()->fromRoute('companyid') 
)); 

Dove dns-search è il percorso che voglio reindirizzare e CompanyID sono i params url.

Alla fine l'URL diventa/dns/ricerca/1 (per esempio)

+0

E assicurati di non perdere la parola chiave "return" come possono accadere cose brutte se ti aspetti l'esecuzione del codice fermarsi lì senza di esso ;-) – AlexMA

6

Questo è il modo di reindirizzamento in ZF2:

return $this->redirect()->toRoute('ModuleName', 
    array('controller'=>$controllerName, 
     'action' => $actionName, 
     'params' =>$params)); 

Spero che questo ti aiuta.

+3

'ModuleName' dovrebbe essere' RouteName' –

16

Uno dei modi più semplici per reindirizzare è:

return $this->redirect()->toUrl('YOUR_URL'); 
+1

BEST BEST BEST BEST esempio, questo ha funzionato e questo è il migliore. 'return $ this-> redirect() -> toUrl ('/ make-world-easy? id = thank-you');' – YumYumYum

+0

questa soluzione ha uno scopo diverso: è usata per i collegamenti ad altre risorse. in linea di principio, non importa, ma se hai bisogno di un approccio Zend-ish, la risposta accettata è la migliore. –

1

Google pensa, che la questione è rilevante per ZF2 reindirizzare con ancora, così io aggiungerò la risposta qui, se non ti dispiace . Possiamo solo utilizzare fragment opzione terzo argomento della toRoute:

public function doAction(){ 
    return $this->redirect() 
     ->toRoute('chats', 
        array('action' => 'view', 
         'id' => $message->getChat()->getId() 
        ), 
        array('fragment' => 'm' . $message->getId()) 
    ); 
} 

il mio percorso:

'chats' => array(
    'type' => 'segment', 
    'options' => array(
     'route' => '/chats/[:action/][:id/]', 
     'constraints' => array(
      'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
      'id' => '[0-9]+', 
     ), 
     'defaults' => array(
      'controller' => 'Application\Controller\Chats', 
      'action' => 'index', 
     ), 
    ), 
), 

Così, l'utente sarà indirizzato smth come /chats/view/12/#m134

Problemi correlati