这是我发布的第一个问题。希望您能对我有所帮助。 标题中描述了我的问题,但更准确地说: 我正在使用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;
}
我真的不明白为什么不打电话。 我什至尝试直接将最后一个函数作为表单中的操作直接调用,我看到该函数已被调用但什么都没发生,什么也没有呈现到页面上。 有人能解决这个问题吗?
最好的问候,
马克西姆
答案 0 :(得分:0)
您似乎已经忘记了路径中占位符之前的斜线
@Route("/giveCompetencesCorpus{newAgent}", name="giveCompetencesCorpus")
应该像
@Route("/giveCompetencesCorpus/{newAgent}", name="giveCompetencesCorpus")
答案 1 :(得分:0)
感谢您的回答,但这不是问题所在(我已经尝试过这种方法)。 我终于找到了问题所在(但我仍然不知道为什么..) 第一个表单是使用真正的TAG和一个提交按钮构建的,而第二个表单是使用Javascript FormData提交的(该代码最初不是由我编写的)。 显然,这就是问题所在,当我使用“常规表单”更改此表单的行为时,一切都将正常进行。 但是,如果有人知道此“错误”的真正根本原因,我会对:)
马克西姆