Ошибка компиляции FatalErrorException: объявление App \ Controller \ DefaultController :: forward - PullRequest
0 голосов
/ 04 мая 2019

Я пытался использовать прямой метод следующим образом:


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 Ответ

2 голосов
/ 04 мая 2019

Вы переделываете метод 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 / * 1 020 ** * тысяча двадцать-одна

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...