2013-03-08 23 views
9

Jak mogę przekierować do innego modułu?Zend Framework 2 Przekierowanie

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

To nie wydaje się działać, żadnych pomysłów?

+2

Jeśli przekierowanie, przekierowanie nazwa trasy. Jeśli chcesz tylko wysłać kolejną akcję, użyj pomocnika forward(). Zobacz http://framework.zend.com/manual/2.1/en/modules/zend.mvc.plugins.html – Sam

Odpowiedz

24

ten sposób przekierować z mojego kontrolera do innej trasy:

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

Gdzie dns-search jest droga Chcę przekierować do companyid są params URL.

W końcu staje URL/dns/search/1 (na przykład)

+0

Upewnij się, że nie przegapisz słowa kluczowego "return", ponieważ mogą wystąpić złe rzeczy, jeśli oczekiwane jest wykonanie kodu zatrzymać się bez niego ;-) – AlexMA

6

ten sposób przekierowania w ZF2:

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

Mam nadzieję, że to pomaga.

+3

'ModuleName' powinno być' NazwaTrasy' –

16

Jednym z prostych sposobów, aby przekierować jest:

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

NAJLEPSZY NAJLEPSZY NAJLEPSZY przykład, to działało i to najlepsze. 'return $ this-> redirect() -> toUrl ('/ make-world-easy? id = thank-you');' – YumYumYum

+0

to rozwiązanie służy do innego celu: służy do tworzenia łączy do innych zasobów. w zasadzie nie ma to znaczenia, ale jeśli potrzebujesz podejścia Zend-owskiego, zaakceptowana odpowiedź jest najlepsza. –

1

Google uważa, że ​​kwestia ta jest istotna dla ZF2 przekierowanie z kotwicy, więc dodam tutaj odpowiedź, jeśli nie przeszkadza . Możemy po prostu użyć fragment opcję w trzecim argumencie toRoute:

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

Moja trasa:

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

Tak, użytkownik zostanie skierowany na czymś jak /chats/view/12/#m134