在symfony 3.4上,我想从控制器中调用另一个函数。被调用的函数将不得不重定向到新页面。我想要修改页面的URL。
但是,使用我使用的方法,页面的更改效果很好,但是URL却没有。
方案如下:
该网址未更改,我不明白。
这是我的代码:
控制器:
<?php
namespace Site\PagesBundle\Controller;
use Site\PagesBundle\Entity\User;
use Site\PagesBundle\Entity\Information;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
/**
* Information controller.
*
* @Route("accueil")
*/
class DefaultController extends Controller
{
/**
* Accueil
*
* @Route("/", name="connexion_index")
* @Method({"GET", "POST"})
*/
public function indexAction(Request $request)
{
$em = $this->getDoctrine()->getManager(); //Récupération du manager
$listeInfos = $em->getRepository('PagesBundle:Information')->getInformationsZone("Zone 1"); //Récupération d'une liste d'informations
$user = new User(); //Initialisation de l'objet User
$form = $this->createForm('Site\PagesBundle\Form\ConnexionType', $user); //Formulaire de création
$form->handleRequest($request);
//Traitement si le formulaire est soumis ( Ajout du package dans la BDD )
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$valide = $this->getDoctrine()->getManager()->getRepository('PagesBundle:User')->authentifier($user->getIdentifiant(),$user->getPassword());
dump($valide);
if($valide == 1)
{
return $this->accueil($request);
}
else
{
return $this->render('@Pages/Default/connexion.html.twig',array(
'user' => $user,
'form' => $form->createView(),
'listeInfos' => $listeInfos,
));
}
// On ajoute un package, donc on offre un téléchargement supplémentaire aux utilisateurs concernés
$this->getDoctrine()->getManager()->getRepository('PagesBundle:User')->updateNbDDLAll("inc");
//return $this->redirectToRoute('paquets_index'); // Redirection page de gestion de packages
}
return $this->render('@Pages/Default/connexion.html.twig',array(
'user' => $user,
'form' => $form->createView(),
'listeInfos' => $listeInfos,
));
}
/**
* @Route("/index", name="accueil")
* @Method("GET")
*/
public function accueil(Request $request)
{
$em = $this->getDoctrine()->getManager(); //Récupération du manager
$listeInfos = $em->getRepository('PagesBundle:Information')->getInformationsZone("Zone 2"); //Récupération d'une liste d'informations
return $this->render('@Pages/Default/accueil.html.twig',array(
'listeInfos' => $listeInfos,
));
}
}
更改必须在此处进行:
if($valide == 1)
{
return $this->accueil($request);
}
收件人
/**
* @Route("/index", name="accueil")
* @Method("GET")
*/
public function accueil(Request $request)
{
$em = $this->getDoctrine()->getManager(); //Récupération du manager
$listeInfos = $em->getRepository('PagesBundle:Information')->getInformationsZone("Zone 2"); //Récupération d'une liste d'informations
return $this->render('@Pages/Default/accueil.html.twig',array(
'listeInfos' => $listeInfos,
));
}
感谢您的帮助
答案 0 :(得分:1)
您没有重定向到其他路径,而只是在控制器view
中返回了indexAction
。由于当前网址已经与此action
相对应,因此不会对其进行更改。如果要导航到其他路径,则必须告诉Symfony这样做。
if($valide == 1)
{
return $this->redirectToRoute('accueil');
}
您的accueil
函数还必须是action
。
/**
* @Route("/index", name="accueil")
* @Method("GET")
*/
public function accueilAction(Request $request)
{
$em = $this->getDoctrine()->getManager(); //Récupération du manager
$listeInfos = $em->getRepository('PagesBundle:Information')->getInformationsZone("Zone 2"); //Récupération d'une liste d'informations
return $this->render('@Pages/Default/accueil.html.twig',array(
'listeInfos' => $listeInfos,
));
}