6
$controller->forward(...) 

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

如何将请求转发到路由名称?

4

4 回答 4

11

这个问题很老,但是为了文档和所有的谷歌人,这里是一种方法。

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'];
  }

}
于 2014-02-04T15:49:26.820 回答
3

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


use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class TaskController extends AbstractController
{

   public function goHome()
   {
      return $this->redirectToRoute('homepage');
   }
}
于 2019-02-20T14:16:26.150 回答
1

转发给控制器。

重定向到页面(通过路由)

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

于 2013-07-05T17:00:39.123 回答
0

提防

router->getRouteCollection()

在接受的答案中建议,但使用此方法会在每个请求上重新生成路由缓存,使应用程序非常慢。

https://github.com/symfony/symfony-docs/issues/6710
于 2020-05-19T13:23:41.060 回答