Контроллер Symfony3.4 вызван, но после перенаправления ничего не происходит - PullRequest
0 голосов
/ 03 июля 2018

Вот первый вопрос, который я опубликовал. Я надеюсь, что вы сможете мне помочь. Моя проблема описана в заголовке, но давайте будем точнее: Я использую PHP7.2 и Symfony3.4 У меня есть стандартная форма, действие перенаправления которой следующее:

/**
     * @Route("/giveMetiers/{newAgent}", name="giveMetiers")
     * @param $newAgent
     * @return Response
     */
    public function giveMetiersAction($newAgent)
    {
        $agent = $this->getProfil();

        $response = new Response();
        $response->setContent(
            $this->render(
                'AgentBundle:Templates:blank.html.twig',
                [
                    "agent" => $agent,
                    "url" => $this->generateUrl(
                        'giveMetiersCorpus',
                        ["newAgent" => $newAgent]
                    ),
                    "title" => "Attribuer des métiers"
                ]
            )
            ->getContent()
        );
        return $response;
    }

Функция giveMetierCorpus имеет следующий вид:

/**
     * @Route("/giveMetiersCorpus{newAgent}", name="giveMetiersCorpus")
     * @param $newAgent
     * @return Response
     */
    public function giveMetiersCorpusAction($newAgent)
    {
        //Some business logic..

        $template = $this->render(
            'AgentBundle:SuperAgent:giveMetiers.html.twig',
            [
                "poles" => $poles,
                "newAgent" => $newagent,
                "metiers" => $metiers,
                "constMetier" => $constMetier,
                "constCompetence" => $constCompetence
            ]
        )
        ->getContent();

        $json = json_encode($template);
        $response = new Response($json, 200);
        $response->headers->set('Content-Type', 'application/json');

        return $response;
    }

Ну, все работает, мой взгляд вызван правильно, и затем отображается новая форма. Здесь приходит беда. Когда я отправляю эту новую форму, выполняется действие:

/**
     * @Route("/updateMetiersAgent", name="updateMetiersAgent")
     * @param Request $request
     * @return Response
     */
    public function updateMetiersAgent(Request $request)
    {
        //Business logics..

        return $this->redirect(
            $this->generateUrl(
                'giveCompetences',
                ["newAgent" => $agent->getId()]
            )
        );
    }

Какие вызовы дают компетенции ..:

/**
     * @Route("/giveCompetences/{newAgent}", name="giveCompetences")
     * @param $newAgent
     * @return Response
     */
    public function giveCompetencesAction($newAgent)
    {
        $agent = $this->getProfil();

        $response = new Response();
        $response->setContent(
            $this->render(
                'AgentBundle:Templates:blank.html.twig',
                [
                    "agent" => $agent,
                    "url" => $this->generateUrl(
                        'giveCompetencesCorpus',
                        ["newAgent" => $newAgent]
                    ),
                    "title" => "Attribuer des competences"
                ]
            )
            ->getContent()
        );
        return $response;
    }

Здесь, функция giveCompetencesCorpus не вызывается ... Я даю вам эту функцию:

/**
     * @Route("/giveCompetencesCorpus{newAgent}", name="giveCompetencesCorpus")
     * @param $newAgent
     * @return Response
     */
    public function giveCompetencesCorpusAction($newAgent)
    {
        //Business Logic

        $template = $this->render(
            'AgentBundle:SuperAgent:giveCompetences.html.twig',
            [
                "poles" => $poles,
                "newAgent" => $newagent,
                "technos" => $listeTechnos,
                "constMetier" => $constMetier,
                "constCompetence" => $constCompetence
            ]
        )
        ->getContent();

        $json = json_encode($template);
        $response = new Response($json, 200);
        $response->headers->set('Content-Type', 'application/json');

        return $response;
    }

Я действительно не понимаю, почему это не звонок. Я даже пытался напрямую вызывать эту последнюю функцию напрямую как действие из моей формы, я вижу, что функция вызывается, но ничего не происходит, ничего не отображается на странице. Кто-нибудь получил решение этой проблемы, пожалуйста?

С наилучшими пожеланиями,

Maxime

Ответы [ 2 ]

0 голосов
/ 11 июля 2018

Спасибо за ваш ответ, но это не было проблемой (я уже пробовал этот способ). Я наконец понял проблему (но все еще я не знаю почему ..) Первая форма была построена с реальным тегом и кнопкой отправки, а вторая была отправлена ​​с использованием Javascript FormData (код изначально не был написан мной). Это было, очевидно, проблемой, когда я изменил поведение этой формы с помощью «нормальной формы», тогда все шло как надо. Однако, если кто-то знает настоящую причину этой «ошибки», я заинтересован в:)

Maxime

0 голосов
/ 09 июля 2018

Вы, кажется, забыли косую черту перед заполнителем в вашем маршруте

@Route("/giveCompetencesCorpus{newAgent}", name="giveCompetencesCorpus")

Должно быть что-то вроде

@Route("/giveCompetencesCorpus/{newAgent}", name="giveCompetencesCorpus")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...