2013-03-08 8 views
9

Как перенаправить на другой модуль?Zend Framework 2 Redirect

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

Это не работает, никаких идей?

+2

Если вы перенаправлении, перенаправление имя маршрута. Если вы просто хотите отправить другое действие, используйте помощник forward(). См. Http://framework.zend.com/manual/2.1/en/modules/zend.mvc.plugins.html – Sam

ответ

24

Это, как я перенаправлять от моего контроллера на другой маршрут:

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

Где ДНС для поиска маршрута Я хочу перенаправить и CompanyID являются URL PARAMS.

В конце URL становится/DNS/поиск/1 (к примеру)

+0

И убедитесь, что вы не пропустите это ключевое слово «return», так как могут произойти плохие вещи, если вы ожидали выполнения кода остановить там без него ;-) – AlexMA

6

Это способ перенаправления в ZF2:

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

Я надеюсь, что это поможет вам.

+3

'ModuleName' должно быть' RouteName' –

16

Один из простых способов Перенаправление:

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

ЛУЧШИЙ ЛУЧШИЙ ЛУЧШИЙ ЛУЧШИЙ пример, это сработало и это лучший. 'return $ this-> redirect() -> toUrl ('/ make-world-easy? id = thank-you');' – YumYumYum

+0

это решение для другой цели: оно используется для ссылок на другие ресурсы. в принципе, это не имеет большого значения, но если вам нужен подход Zend-ish, то принятый ответ является лучшим. –

1

Google считает, что этот вопрос имеет отношение к ZF2 перенаправлять с якоря, поэтому я добавлю ответ здесь, если вы не возражаете , Мы можем просто использовать fragment вариант в третьем аргументе toRoute:

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

Мой маршрут:

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

Таким образом, пользователь будет направлен к чему-л, как /chats/view/12/#m134