2014-10-29 22 views
1

时Supose三条路径的symfony无法检索路径被转发

  • /首/动作/ {}参数参数#WHERE可以是空
  • /秒/动作/ {}参数参数#WHERE丢失需要
  • /第三/动作/ {参数} #WHERE参数是必需的太

Supose一个控制器,具有三个动作

public function firstAction(Request $request, $argument=null){ 
    $route_params = (array) $request->attributes->get('_route_params'); 
    $argument=(empty($argument) ? $route_params['argument'] : $argument; 
    return new Response('This was the argument'.(string)$argument); 
} 

public function secondAction($argument){ 
    return $this->forward('Bundle:Controller:first',array('argument'=>$argument)); 
} 

public function thirdAction($argument){ 
    return $this->forward('Bundle:Controller:first'); 
} 

当装载以下网址:

  • HTTP://本地主机/第一/动作/传递
  • HTTP://本地主机/第二/动作/转发
  • HTTP://本地主机/第三/动作/ forwarded_too

得到的结果分别为:

  • “这是参数传递”
  • “这是转发的说法”
  • “这是论据”

检查是否借道转发坚持后,我惊讶的是要认识到“路线得到转发后从请求属性ParameterBag丢失“。

是否有任何其他方式来检索具有参数的请求匹配路线?

为什么路由不通过转发持续?

谢谢大家

回答

0

forward方法采取three parameters,第三是查询参数,所以尽量修改,如转发:

public function secondAction($argument){ 
    return $this->forward('Bundle:Controller:first',array(),array('argument'=>$argument)); 
} 

希望这有助于

+0

感谢您的答复,但不是我要找的。 我想知道的是保留路线,让它通过转发坚持下去,因为没有其他请求发生,并且没有任何意义。 – xsubira 2014-10-29 12:07:53