我有一个问题:提交带有select元素的表单后,我无法重定向。
我必须选择一项职责(永久性),选择并提交后,我必须重定向到其页面。重定向不会发生,下面是控制器。
/**
* @Route("/", name="home")
* @Route("/permanences/{id}", name="perm_show")
*/
public function home(Request $request)
{
$form = $this->createForm(SelectPermanenceType::class, $permanence = null);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
$permanence = $form['nom']->getData();
}
var_dump($permanence );
return $this->render('webclient/home.html.twig', [
'SelectPermanence' => $form->createView()
]);
}
/**
* @Route("/permanences", name="permanences")
*/
public function index(PermanenceRepository $repo)
{
$permanences = $repo->findAll();
return $this->render('webclient/permanences.html.twig', [
'controller_name' => 'WebclientController',
'permanences' => $permanences
]);
}
/**
* @Route("/permanences/new", name="perm_new")
* @Route("/permanences/{id}/edit", name="perm_edit")
*/
public function form(Permanence $permanence = null, Request $request, ObjectManager $manager)
{
if(!$permanence){
$permanence = new Permanence();
}
$form = $this->createForm(PermanenceType::class, $permanence);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
if(!$permanence->getId()){
$permanence->setCreatedAt(new \DateTime());
}
$manager->persist($permanence);
$manager->flush();
return $this->redirectToRoute('perm_show', ['id' => $permanence->getId()]);
}
return $this->render('webclient/new_perm.html.twig', [
'newPermanence' => $form->createView(),
'editMode' => $permanence->getId() !== null
]);
}
/**
* @Route("/permanences/{id}", name="perm_show")
*/
public function show(Permanence $permanence)
{
return $this->render('webclient/show.html.twig',[
'permanence' => $permanence
]);
}
页面显示正确,dowpdown也显示正确,但是当我选择并发送时,什么也没有发生。 有人知道吗?
答案 0 :(得分:0)
您必须更改路线的显示顺序。他们最好有以下顺序:
如下:
/**
* @Route("/", name="home")
*/
public function home(Request $request)
{
$form = $this->createForm(SelectPermanenceType::class, $permanence = null);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
$permanence = $form['nom']->getData();
}
var_dump($permanence );
return $this->render('webclient/home.html.twig', [
'SelectPermanence' => $form->createView()
]);
}
/**
* @Route("/permanences", name="permanences")
*/
public function index(PermanenceRepository $repo)
{
$permanences = $repo->findAll();
return $this->render('webclient/permanences.html.twig', [
'controller_name' => 'WebclientController',
'permanences' => $permanences
]);
}
/**
* @Route("/permanences/{id}", name="perm_show")
*/
public function show(Permanence $permanence)
{
return $this->render('webclient/show.html.twig',[
'permanence' => $permanence
]);
}
/**
* @Route("/permanences/new", name="perm_new")
* @Route("/permanences/{id}/edit", name="perm_edit")
*/
public function form(Permanence $permanence = null, Request $request, ObjectManager $manager)
{
if(!$permanence){
$permanence = new Permanence();
}
$form = $this->createForm(PermanenceType::class, $permanence);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
if(!$permanence->getId()){
$permanence->setCreatedAt(new \DateTime());
}
$manager->persist($permanence);
$manager->flush();
return $this->redirectToRoute('perm_show', ['id' => $permanence->getId()]);
}
return $this->render('webclient/new_perm.html.twig', [
'newPermanence' => $form->createView(),
'editMode' => $permanence->getId() !== null
]);
}
我也删除了perm_show
的重复路由定义,在每个路由上只能定义一次。