2015-12-03 2 views
-2

У меня проблема с созданием сеанса.Сеансы в Symfony2 Отображаемое имя

Я смог реализовать логин с сеансом, который может извлекать имя и идентификатор пользователя, но когда я меняю страницу, больше не отображается имя.

<?php 

namespace AppBundle\Controller; 

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use AppBundle\Entity\FosUser; 
use AppBundle\Modals\Login; 


class DefaultController extends Controller 
{ 
    /** 
    * @Route("/", name="homepage") 
    */ 
    public function indexAction() 
    { 
      return $this->render('default/index.html.twig'); 
    } 

    /** 
    * @Route("/login/", name="login") 
    */ 
    public function loginAction(Request $request) 
    { 
     $session = $this->getRequest()->getSession(); 

     if($request->getMethod()=='POST'){ 
      $session -> clear(); 

      $email = $request->get('email'); 
      $password = $request->get('password'); 

      $remember=$request->get('remember'); 



      $em = $this ->getDoctrine()->getEntityManager(); 

      $repository = $em->getRepository('AppBundle:FosUser'); 

      $user = $repository->findOneBy(array('email'=>$email,'password'=>$password)); 

      if($user){ 

       if($remember == 'remember-me'){ 
        $login = new Login(); 
        $login->setEmail($email); 
        $login->setPassword($password); 
        $session->set('login',$login); 
       } 

       return $this->render('default/index.html.twig',array('name'=>$user->getFirstname(),'userid'=>$user->getId())); 
      }else{ 
       return $this->render('default/login.html.twig',array('name'=>'Login Failed')); 
      } 
     }else{ 
      if($session->has('login')){ 
       $login = $session->get('login'); 

       $email = $login->getEmail(); 
       $password = $login->getPassword(); 

       $em = $this ->getDoctrine()->getEntityManager(); 

       $repository = $em->getRepository('AppBundle:FosUser'); 

       $user = $repository->findOneBy(array('email'=>$email, 'password' => $password)); 

       if($user){ 
        return $this -> render('default/index.html.twig',array('name'=>$user->getFirstname(),'userid'=>$user->getId())); 
       } 
      } 
      return $this->render('default/login.html.twig'); 
     } 

    } 

    public function logoutAction(Request $request){ 
    $session = $this->getRequest()->getSession(); 
    $session->clear(); 

    return $this->render('default/login.html.twig'); 
} 
} 

screenshot1 screenshot2

+4

Пожалуйста, отредактируйте все необходимые данные, особенно ваш код, в свой вопрос. – KhorneHoly

+0

Я пробовал, но не позволяю мне :(. Дает мне ошибки. – codi05ro

+0

Какие ошибки вы получаете из Stackoverflow? – KhorneHoly

ответ

-4

Вы можете использовать сеанс, как это:

// Устанавливаем атрибуты сеанса

$ this-> получить ('сеанса') -> набор ('loginUserId ', $ user [' user_id ']);

// получить переменную сеанса во всех контроллере

$ this-> получить ('сессии') -> получить ('loginUserId');

+0

Вы никогда не должны создавать новый сеанс, но получите его через ' $ session = $ this-> get ('session') ' – KhorneHoly