tak jak w temacie, nie działa mi redirectResponse, ale uwaga: tylko w jednej metodzie:
<?php namespace Website\CoreBundle\Controller; use Website\CoreBundle\Controller\DefaultController; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; class AuthController extends DefaultController { private $usersEntity; private $username; private $password; private $rememberMe; /** * @Route("/panel/logowanie", name="cms_login") * @Template("WebsiteCoreBundle:Default:login.html.twig") */ public function indexAction() { $request = Request::createFromGlobals(); if ($request->getMethod() == "POST") { $dataFromLoginForm = $request->get('form'); $this->username = $dataFromLoginForm['username']; $this->password = $dataFromLoginForm['password']; $this->rememberMe = $request->get('remember-me'); $this->validate(); } $loginForm = $this->createFormBuilder() 'label' => ' ', 'placeholder' => 'Nazwa użytkownika' ) )) 'label' => ' ', 'placeholder' => 'Hasło' ) )) ->getForm(); } /** * @Route("panel/wyloguj", name="cms_logout") */ public function logoutAction() { $this->session->set('logged', false); return new RedirectResponse($this->generateUrl('cms_home')); } /** * Validates the input data from the login form */ private function validate() { $loginModel = new \Website\CoreBundle\Forms\Models\LoginModel(); $loginModel->username = $this->username; $loginModel->password = $this->password; $loginModel->rememberMe = ($this->rememberMe == 'on') ? true : false; $errors = $this->get('validator')->validate($loginModel); { $entityManager = $this->getDoctrine()->getEntityManager(); 'username' => $this->username, 'password' => $this->password )); $this->login(); else } else { //błędne dane } } /** * Creates the session or cookie if the data from the login form has been validated successfuly */ private function login() { if ($this->rememberMe) { $this->session->set('logged', true); $this->session->set('username', $this->username); } return new RedirectResponse($this->generateUrl('cms_home')); } }
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 %}
{% 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.