formulaire synfony 3

Par spectre59390, il y a 9 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

j ai crée 3 entity USERS,USERS_EMPLOYEE,USERS_WEB;
ainsi que 2 bundle un principale appelé CORE avec une vue accueil et l action qui va avec .
et un second bundle appelé ConnectUsers .
Dans ma vue acccueil (accueil.html.twig) je souhaite avoir un rendu du controleur present dans le bundle ConnectUsers
jusque la rien de compliqué .
Sauf que la vue en question est un formulaire de l'entity USERS.
Donc dans mon controller du bundle ConnectUsers j'ai le code suivant:

<?php namespace Vendor\ConnectUsersBundle\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Vendor\ConnectUsersBundle\Entity\Users; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\PasswordType; class UsersController extends Controller { public function indexAction() { return $this->render('VendorConnectUsersBundle:Default:compte.html.twig'); } public function connexionAction(Request $request) { $session=$request->getSession(); $users=new Users(); $form = $this->createFormBuilder($users) ->add('email', TextType::class) ->add('password', PasswordType::class) ->add('save', SubmitType::class, array('label' => 'connection')) ->getForm(); $form->handleRequest($request); //if ($request.isMethod('POST')) if($form->isValid()) { $users->setEmail($form['email']->getData()); // $em=$this->getDoctrine()->getManager()->getRepository('VendorConnectUsersBundle:Users'); // $usersreturn=$em->findOneByEmail($users); // if(!is_null($usersreturn)) // { // if($users->getPassword()!= $usersreturn->getPassword()) // { // //return $this->redirectToRoute('homepage'); // return $this->render('VendorConnectUsersBundle:Default:inscription.html.twig'); // } // else // { // $session->set('users',$usersreturn); // //return $this->redirectToRoute('homepage'); // return $this->render('VendorConnectUsersBundle:Default:inscription.html.twig'); // } // } // else // { // return $this->render('VendorConnectUsersBundle:Default:connexion.html.twig', array('form' => $form->createView())); // } return $this->render('VendorConnectUsersBundle:Default:inscription.html.twig'); } // if(!$session->has('users')) // { return $this->render('VendorConnectUsersBundle:Default:connexion.html.twig', array('form' => $form->createView())); // } // else // { //return $this->render('VendorConnectUsersBundle:Default:compte.html.twig'); //} } public function deconnexionAction(Request $request) { $session = $request->getSession()->remove('users'); //$users = $session->get('users'); return $this->redirectToRoute('homepage'); } public function inscriptionAction() { return $this->render('VendorConnectUsersBundle:Default:inscription.html.twig'); } public function connexionPasswordErrorAction(){ return $this->render('VendorConnectUsersBundle:Default:passworderror.html.twig'); } public function connexionCompteErrorAction(){ return $this->render('VendorConnectUsersBundle:Default:compteerror.html.twig'); } }

Mon probleme c'est que je recupère jamais les données passer en post
Donc je vous solicite pour votre aide.
Merci d'avance de vos réponses.

3 réponses

Seddik06, il y a 9 ans

tout d'abord tu passe l'entity $user dans la paramètre findOneByEmail
$usersreturn=$em->findOneByEmail($users);

je crois tu doit :

$email = $form['email']->getData();

$em=$this->getDoctrine()->getManager()->getRepository('VendorConnectUsersBundle:Users');

$usersreturn=$em->findOneByEmail($email);

spectre59390, il y a 9 ans

Bonjour a toi .
Mon soucis est que mon controller est inbriqueé dans une vues .
Lorsque je fais un vardump de $form->isValid() ou $form->isSubmitted(),
j'ai un retour fasle.
je vais link la vue ou est appelé mon controller :

{% extends '::base.html.twig' %} {% block stylesheets %} {{ parent() }} <link rel="stylesheet" type="text/css" href="{{ asset('css/header.css') }}"/> <link rel="stylesheet" type="text/css" href="{{ asset('css/carrousel.css') }}"/> <link rel="stylesheet" type="text/css" href="{{ asset('css/recherchecp.css') }}"/> {% endblock stylesheets %} {% block javascripts %} <script src="{{ asset('js/monjs.js') }}"></script> {% endblock javascripts %} {% block body %} <div class="container-fluid"> {% block header %} {% include ':template:header.html.twig' %} {% endblock header %} </div> <div class="container"> <div class="row"> {% block recherche %} {% include ':template:recherchecp.html.twig' %} {% endblock recherche %} </div> <div class="row"> <div class="col-md-6"> {{ render(controller('VendorConnectUsersBundle:Users:connexion')) }} </div> </div> <div class="row"> <div class="col-hidden-xs col-md-6"> {% block carrousel %} {% include ':template:carrousel.html.twig' %} {% endblock carrousel %} </div> </div> <div class="row"> <div class="col-xs-22 col-md-6"> {% block produit %} {% include ':template:produit.html.twig' %} {% endblock %} </div> </div> {% endblock body %}
barbas, il y a 9 ans

Salut,

Essaye ceci :

$users = new Users(); $form = $formFactory->createBuilder() ->add('email', TextType::class) ->add('password', PasswordType::class) ->add('save', SubmitType::class, array('label' => 'connection')) ->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); $users->setEmail($data['email']); return $this->redirectToRoute('homepage'); }