如何转发请求到路由名称

Zel*_*jko 5 symfony

$controller->forward(...) 
Run Code Online (Sandbox Code Playgroud)

需要表单中的字符串MyBundle:Controller:action,但我只有路由名称.

如何转发路由名称请求?

Jos*_*osh 9

这个问题很老,但是为了文档和所有的googlers,这里有一种方法.

class Mycontroller extends Controller {
  public function indexAction(){
        $response = $this->forward($this->routeToControllerName('ROUTE_NAME_HERE'));
  }

  private function routeToControllerName($routename) {
    $routes = $this->get('router')->getRouteCollection();
    return $routes->get($routename)->getDefaults()['_controller'];
  }

}
Run Code Online (Sandbox Code Playgroud)


Gam*_*erz 5

重定向到路由名称“homepage”:


use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class TaskController extends AbstractController
{

   public function goHome()
   {
      return $this->redirectToRoute('homepage');
   }
}
Run Code Online (Sandbox Code Playgroud)