如何使用GET参数转发?
我在同一个控制器中有两个动作.我在第一个动作中做了一些魔术,如果一切顺利,我希望它转发到另一个动作,但是在第一个动作中创建了GET参数.
我现在拥有的是:
return $this->forward('AppBundle:default:tracked', array(), array(
'tracking_code' => $tracking_code,
'company' => $tp_company_name
)));
在那里空阵列,因为他们不顾一切地努力让它发挥作用. Documentation告诉第二个数组是查询参数,但没有真正发生,所以我一定做错了.
第二个动作试图得到这样的参数:
/**
* @Route("/tracked", name="tracked")
*/
public function trackedAction()
{
$request = Request::createFromGlobals();
// If there is the required variables in the GET:
if($request->query->has('tracking_code') && $request->query->has('company'))
但不,似乎变量永远不会到达那里.
我有这种设置的原因是,用户也可以从其他地方进入trackedAction.
解决方法:
我认为在第二个动作中获取参数的正确方法是这样做:
return $this->forward('AppBundle:default:tracked', array(
'tracking_code' => $tracking_code,
'company' => $tp_company_name
)));
你的第二个动作是:
/**
* @Route("/tracked/{tracking_code}/{company}", name="tracked")
*/
public function trackedAction($tracking_code=null, $company=null)
{
...
}
我使用$tracking_code = null,因为你指定这可以从另一个地方访问,可能不提供这些参数.这样它对两者都有效.
希望这可以帮助.
标签:php,symfony
来源: https://codeday.me/bug/20190609/1203621.html