如何转发请求到路由名称

时间:2013-07-05 16:55:31

标签: symfony

$controller->forward(...) 

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

如何转发路由名称请求?

4 个答案:

答案 0 :(得分: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'];
  }

}

答案 1 :(得分:0)

转发到控制器。

重定向到页面(按路线)

http://symfony.com/doc/current/book/controller.html#redirecting

答案 2 :(得分:0)

重定向到路由名称“首页”:


use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class TaskController extends AbstractController
{

   public function goHome()
   {
      return $this->redirectToRoute('homepage');
   }
}

答案 3 :(得分:0)

当心

emplace_back

建议在接受的答案中使用该方法,但是使用此方法将重新生成每个请求的路由缓存,从而使应用非常慢。

resize