IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Passer un objet d'un contrôleur à un autre


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut Passer un objet d'un contrôleur à un autre
    Bonjour,

    Je suis dans une page d'authentification et lorsque je clique sur le button se connecter je me redirige vers la page candidat ou je veux afficher les informations de l'objet qui a fait l'authentification mais je sais pas comment faire.

    Mon contrôleur au niveau de l'authentification est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <?php
     
    namespace frontOffice\frontBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;
    use frontOffice\frontBundle\Entity\Candidat;
     
    class CarrieresController extends Controller
    {
        public function indexAction(Request $request)
        {
     
            $session = $this->getRequest()->getSession();
            $em = $this->getDoctrine()->getManager();
            $repository = $em->getRepository('frontOfficeBundle:Candidat');
     
     
            if($request->getMethod()=='POST'){
     
                $session->clear();
     
                $username = $request->get('username');
                $pass = $request->get('password');
                $password =md5($pass);
     
                $remember = $request->get('remember');
     
                $user = $repository->findOneBy(array('emailCandidat'=>$username,'motDePasseCandidat'=>$password));
     
                if($user){
     
                    if($remember == "remember-me"){
     
                        $login = new Candidat();
                        $login->setEmailCandidat($username);
                        $login->setMotDePasseCandidat($password);
                        $session->set('login',$login);
                    }
     
     
                    return $this->redirect($this->generateUrl('front_office_candidat'));
                }
     
           else{
     
               return $this->redirect($this->generateUrl('front_office_carrieres'));
            }
            }
     
            else{
                if($session->has('login')){
                    $login = $session->get('login');
                    $username = $login->getEmailCandidat();
                    $password = $login->getMotDePasseCandidat();
                    $user = $repository->findOneBy(array('emailCandidat'=>$username,'motDePasseCandidat'=>$password));
     
                    if($user){
     
                        return $this->redirect($this->generateUrl('front_office_candidat'));
                    }
                }
            }
     
            return $this->render('frontOfficeBundle:Carrieres:carrieres.html.twig');
        }
    }
    et je veux récupérer les infos dans ce contrôleur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    namespace frontOffice\frontBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
     
    class CandidatController extends Controller
    {
        public function indexAction()
        {
     
            return $this->render('frontOfficeBundle:Candidat:candidat.html.twig');
        }
    }
    le première contrôleur est lié à une page nommé carrières et la 2éme page est lié à une page candidat

    est-ce qu’il y a une solution s'il vous plait?

    Merci

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 122
    Par défaut
    Salut,

    La méthode generateUrl peux prendre un deuxième paramètre qui est un tableau de paramètre, a tu essayé de passer ton objet de cette façon ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    non est-ce-que vous pouvez m'aider s'il vous plait comment je pourrai faire le truc et récupérer les valeur dans l'autre contrôleur.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    Il n'y a pas besoin de passer des objets entre contrôleurs au pire il y'a les mecanismes de sessions etc...
    Si tu veux récupérer l'utilisateur qui s'est connecté (donc le User defini dans le security.yml) tu peux récupérer le token de sécurité et récupérer l'utilisateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function indexAction()
    {
        $user = $this->get('security.context')->getToken()->getUser();
    }
    Bien sur tu ne pourras pas récupérer son mot de passe pour des raisons de sécurité évidentes

    Il te suffit ensuite de faire une requête pour récupérer l'utilisateur par son login

  5. #5
    Membre chevronné
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par gototog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function indexAction()
    {
        $user = $this->get('security.context')->getToken()->getUser();
    }
    S'il utilise le UserProvider de symfony bien sur mais apparament le process est un peut détourné

Discussions similaires

  1. [POO] Passer un objet d'une page à l'autre
    Par Sh4dow49 dans le forum Langage
    Réponses: 9
    Dernier message: 27/10/2008, 19h27
  2. Passer un objet d'une action à une autre
    Par mattheox dans le forum Struts 1
    Réponses: 3
    Dernier message: 09/01/2008, 22h51
  3. Réponses: 3
    Dernier message: 20/07/2007, 11h23
  4. [RCP][débutant] Comment passer un objet d'une vue à une autre
    Par jycronier dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 20/07/2006, 15h13
  5. [JSP] Passer un objet d'une page à une autre
    Par critok dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 07/07/2006, 14h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo