Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Symfony2]Nie działa redirectResponse
Szymciosek
post
Post #1





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

Ostrzeżenie: (0%)
-----


Witam,
tak jak w temacie, nie działa mi redirectResponse, ale uwaga: tylko w jednej metodzie:

  1. <?php
  2.  
  3. namespace Website\CoreBundle\Controller;
  4.  
  5. use Website\CoreBundle\Controller\DefaultController;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  7. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\HttpFoundation\Request;
  10.  
  11. class AuthController extends DefaultController
  12. {
  13. private $usersEntity;
  14. private $username;
  15. private $password;
  16. private $rememberMe;
  17.  
  18. /**
  19.   * @Route("/panel/logowanie", name="cms_login")
  20.   * @Template("WebsiteCoreBundle:Default:login.html.twig")
  21.   */
  22. public function indexAction()
  23. {
  24. $request = Request::createFromGlobals();
  25. if ($request->getMethod() == "POST")
  26. {
  27. $dataFromLoginForm = $request->get('form');
  28.  
  29. $this->username = $dataFromLoginForm['username'];
  30. $this->password = $dataFromLoginForm['password'];
  31. $this->rememberMe = $request->get('remember-me');
  32. $this->validate();
  33. }
  34.  
  35. $loginForm = $this->createFormBuilder()
  36. ->add('username', 'text', array(
  37. 'label' => ' ',
  38. 'attr' => array(
  39. 'placeholder' => 'Nazwa użytkownika'
  40. )
  41. ))
  42. ->add('password', 'text', array(
  43. 'label' => ' ',
  44. 'attr' => array(
  45. 'placeholder' => 'Hasło'
  46. )
  47. ))
  48. ->getForm();
  49.  
  50. return array('logged' => $this->session->get('logged'), 'login_form' => $loginForm->createView());
  51. }
  52.  
  53. /**
  54.   * @Route("panel/wyloguj", name="cms_logout")
  55.   */
  56. public function logoutAction()
  57. {
  58. $this->session->set('logged', false);
  59.  
  60. return new RedirectResponse($this->generateUrl('cms_home'));
  61. }
  62.  
  63. /**
  64.   * Validates the input data from the login form
  65.   */
  66. private function validate()
  67. {
  68. $loginModel = new \Website\CoreBundle\Forms\Models\LoginModel();
  69. $loginModel->username = $this->username;
  70. $loginModel->password = $this->password;
  71. $loginModel->rememberMe = ($this->rememberMe == 'on') ? true : false;
  72.  
  73. $errors = $this->get('validator')->validate($loginModel);
  74.  
  75. if (count($errors) == 0)
  76. {
  77. $entityManager = $this->getDoctrine()->getEntityManager();
  78. $this->usersEntity = $entityManager->getRepository('WebsiteCoreBundle:CmsUsers')->findBy(array(
  79. 'username' => $this->username,
  80. 'password' => $this->password
  81. ));
  82.  
  83. if (!empty($this->usersEntity))
  84. $this->login();
  85. else
  86. echo 'Brak konta';
  87. }
  88. else
  89. {
  90. //błędne dane
  91. }
  92. }
  93.  
  94. /**
  95.   * Creates the session or cookie if the data from the login form has been validated successfuly
  96.   */
  97. private function login()
  98. {
  99. if ($this->rememberMe)
  100. {
  101. $this->session->set('logged', true);
  102. $this->session->set('username', $this->username);
  103. }
  104.  
  105. return new RedirectResponse($this->generateUrl('cms_home'));
  106. }
  107.  
  108. }



indexAction: sprawdza metodę przesyłanych danych, tworzy formularz (podejrzewam, ze w symfony można śmiało stworzyć osobną klasę do tworzenia konkretnego formularza coś na wzór wykorzystanego przeze mnie LoginModel?)
logoutAction: tutaj wszystko działa sprawnie, robi się redirect do strony głównej panelu...
validate: tutaj debuggując wychodzi na to, że też wszystko przechodzi sprawnie
login: dopiero tutaj dzieje się chyba jakaś magia... dodając w tej metodzie var_dump('asd') zostaje ono wyświetlone, gdy wyświetliłem var_dump(redirectResponse) (oczywiście stworzyłem z tego zmienną), to też zostało coś tam wyświetlone, ale samo przekierowanie już nie działa przez co mam problem, bo po wykonaniu formularza poniżej, otwiera się całość, tworzy się sesja, ale zostaje mi ten formularz logowania na środku dalej...

Kod
{% extends 'WebsiteCoreBundle:Default:base.html.twig' %}

{% block content %}
<div id="login-panel">
    <div id="login-panel-title">
        <p>CMS</p>
        <p>Logowanie</p>
    </div>
    <form action="{{ path('cms_login') }}" method="post">
        {{ form_widget(login_form) }}
        <div id="remember-me"><label for="remember-me">Zapamiętaj mnie</label><input type="checkbox" name="remember-me" checked /></div>
        <input type="submit" name="login_submit" value="Zaloguj" />
        <a href="#zapomnialem" id="forgot-password">Zapomniałem hasła</a>
    </form>
</div>
{% endblock %}




Przy okazji proszę o jakieś uwagi dotyczące klasy.

Ten post edytował Szymciosek 11.05.2013, 11:45:59
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 22:18