Symfony3.4控制器已调用,但重定向后未发生任何反应

时间:2018-07-03 14:10:12

标签: symfony-3.4

这是我发布的第一个问题。希望您能对我有所帮助。 标题中描述了我的问题,但更准确地说: 我正在使用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()]
            )
        );
    }

哪个调用GiveCompetences ..:

/**
     * @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;
    }

在这里,给定的功能compCompenceencesCorpus不是...我给你这个功能:

/**
     * @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;
    }

我真的不明白为什么不打电话。 我什至尝试直接将最后一个函数作为表单中的操作直接调用,我看到该函数已被调用但什么都没发生,什么也没有呈现到页面上。 有人能解决这个问题吗?

最好的问候,

马克西姆

2 个答案:

答案 0 :(得分:0)

您似乎已经忘记了路径中占位符之前的斜线

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

应该像

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

答案 1 :(得分:0)

感谢您的回答,但这不是问题所在(我已经尝试过这种方法)。 我终于找到了问题所在(但我仍然不知道为什么..) 第一个表单是使用真正的TAG和一个提交按钮构建的,而第二个表单是使用Javascript FormData提交的(该代码最初不是由我编写的)。 显然,这就是问题所在,当我使用“常规表单”更改此表单的行为时,一切都将正常进行。 但是,如果有人知道此“错误”的真正根本原因,我会对:)

马克西姆