FatalErrorException编译错误:App \ Controller \ DefaultController :: forward的声明

时间:2019-05-04 18:59:30

标签: symfony symfony4

我试图这样使用正向方法:


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行

我验证了语法,这似乎是正确的。

1 个答案:

答案 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编码建议可能很有用。当然,它总是很有趣,但是习惯于公认的标准很有用,这样其他人可以更轻松地阅读您的代码。

https://www.php-fig.org/psr/psr-1/

https://www.php-fig.org/psr/psr-2/