$controller->forward(...)
需要表单中的字符串或MyBundle:Controller:action
,但我只有路由名称。
如何转发路由名称请求?
答案 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)
答案 2 :(得分:0)
重定向到路由名称“首页”:
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class TaskController extends AbstractController
{
public function goHome()
{
return $this->redirectToRoute('homepage');
}
}
答案 3 :(得分:0)
当心
emplace_back
建议在接受的答案中使用该方法,但是使用此方法将重新生成每个请求的路由缓存,从而使应用非常慢。
resize