我试图这样使用正向方法:
class DefaultController extends AbstractController{ // ligne 15
//some code ...
/**
* @Route("/forwarding", name="forwarding")
*/
public function forward(){
$response= $this->forward(
'App\Controller\DefaultController::resultfoorward',
array('param'=> 1)
);
return $response;
}
/**
* @Route("/resultatForwarding/{param?}", name="resultfoorward")
*/
// il faut écrire le parametre entre parenthèses pour pouvoir l'afficher
public function resultfoorward($param){
exit('Voila la page à qui j\'a forwardé et voil son param' .$param);
}
但是没有用。它给了我以下错误:
FatalErrorException 编译错误:App \ Controller \ DefaultController :: forward()的声明必须与Symfony \ Bundle \ FrameworkBundle \ Controller \ AbstractController :: forward兼容(字符串$ controller,数组$ path = Array,数组$ query = Array):Symfony \ Component \ HttpFoundation \ Response
在DefaultController.php第15行
我验证了语法,这似乎是正确的。
答案 0 :(得分:2)
您要重新声明已经在forward()
中或更具体地在AbstractController
中定义的Symfony\Bundle\FrameworkBundle\Controller\ControllerTrait
方法。
您还可以在内部调用forward()
,这可能导致无限递归。
您需要重命名forward
方法,最好重命名为forwardAction()
,将resultfoorward()
重命名为resultForwardAction()
,以遵守Symfony命名标准。这样可以解决命名和声明冲突。
/**
* @Route("/forwarding", name="forwarding")
*/
public function forwardAction()
{
$response = $this->forward(
'App\Controller\DefaultController::resultForward',
array('param' => 1)
);
return $response;
}
/**
* @Route("/resultatForwarding/{param}", name="resultforward")
*/
public function resultForwardAction($param)
{
exit('Voila la page à qui j\'a forwardé et voil son param' . $param);
}
有关代码样式的一些提示,检查PSR-1和PSR-2编码建议可能很有用。当然,它总是很有趣,但是习惯于公认的标准很有用,这样其他人可以更轻松地阅读您的代码。