utilizando una trabajar sesión sesiones sesion que permite pasar nos iniciar función cuál configurar con php session symfony symfony2.4

una - utilizando session php



Error al iniciar la sesión: ya iniciado por PHP($_SESSION está configurado). 500 Internal Server Error-RuntimeException (2)

Symfony2, de forma predeterminada, inicia las sesiones automáticamente.

No hay necesidad de $session = new Session();

Prueba esto,

public function indexAction(Request $request) { $session = $request->getSession();

Ref: http://symfony.com/doc/current/book/controller.html#managing-the-session

Estoy intentando implementar una página de inicio de sesión simple para mi paquete usermanagement y soy nuevo en la creación de un formulario a través de formbuilder. Solo hay 3 funciones dentro de mi paquete donde hay una nueva sesión y se llama en diferentes rutas, incluso si elimino las otras 2 aún recibo el mismo error en ella. Aquí está mi código:

<?php namespace Acme/UserManagementBundle/Controller; use Symfony/Bundle/FrameworkBundle/Controller/Controller; use Symfony/Component/HttpFoundation/Request; use Symfony/Component/HttpFoundation/Session/Session; use Acme/UserManagementBundle/Entity/Users; use Acme/UserManagementBundle/Form/SigninType; class DefaultController extends Controller { public function indexAction() { $session = new Session(); $users = new Users(); $form = $this->createForm(new SigninType(), $users); if ($session->has(''token'')) { return $this->render(''AcmeUserManagementBundle:Default:home.html.twig'', array(''token'' => $session->get(''token''))); } if (!($session->has(''alert''))) { $session->set(''alert'', ''Welcome''); return $this->render(''AcmeUserManagementBundle:Default:index.html.twig'', array(''form'' => $form->createView(), ''alert'' => ''Welcome!'')); } else { $alert = $session->get(''alert''); $session->clear(); return $this->render(''AcmeUserManagementBundle:Default:index.html.twig'', array(''form'' => $form->createView() ,''alert'' => $alert)); } } public function logoutAction() { $session = new Session(); $session->invalidate(); return $this->render(''AcmeUserManagementBundle:Default:index.html.twig''); } public function signupAction() { return $this->render(''AcmeUserManagementBundle:Default:signup.html.twig''); } public function LoginAction(Request $request) { $session = new Session(); if ($request->getmethod()==''POST'' || $session->get(''token'') != ""){ $user = $request->get(''user''); $password = $request->get(''password''); $em = $this->getDoctrine()->getManager(); $repository = $em->getRepository(''AcmeUserManagementBundle:Users''); $username = $repository->findOneBy(array(''username''=>$user,''password''=>$password)); if (!$session->get(''token'') && $username) { $token = $this->get(''token_generator'')->getToken(); $session->set(''token'', $token, ''user'', $username); } else { $session->set(''alert'', ''Invalid Username and/or Password!''); return $this->redirect($this->generateUrl(''homepage'')); } return $this->redirect($this->generateUrl(''homepage'')); } else { return $this->redirect($this->generateUrl(''homepage'')); } } }

Cuando traté de implementar una interfaz formbuilder dentro de mi función, de repente me encontré con esta en comparación con la creación normal de a través de html, que no he tenido problemas en absoluto. ¿Hay algún problema con mi código? porque probé este código de inicio de sesión a través de HTML y lo convertí en el componente formbuilderinterface de Symfony.


Lo estás haciendo mal !

He estado perdiendo el tiempo buscando una solución para ese problema, y ​​termino haciendo lo mismo (usando Request $ request) en la functionAction () para enviar una variable de sesión a una plantilla.

Sin embargo, todo esto es incorrecto. TWIG puede acceder a todas las variables de sesión directamente, no necesita pasar ninguna variable en el procesamiento TWIG ().

Para responder al problema original, debe mantener el comportamiento predeterminado de indexAction () sin parámetro, y eliminar la "matriz (''token'' => $ session-> get (''token''))" de su llamada de renderizado TWIG.

Lo único que debe saber es que puede llamar a la variable de sesión "token" directamente en su plantilla, usando: {{app.session.get (''token'')}}

¡Y deja que la magia sea! ¡Así de simple!