fosuserbundle override-login-action
Ich bin mit FSOUserBundle und ich überschreiben möchten loginAction, habe ich diese Methode:
namespace PjDZ\UserBundle\Controller;
use FOS\UserBundle\Controller\SecurityController as BaseController;
class SecurityController extends BaseController {
public function loginAction(\Symfony\Component\HttpFoundation\Request $request)
{
/** @var $session \Symfony\Component\HttpFoundation\Session\Session */
$session = $request->getSession();
//get the error if any (works with forward and redirect -- see below)
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} elseif (null !== $session && $session->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
$session->remove(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = '';
}
if ($error) {
//TODO: this is a potential security risk (see http://trac.symfony-project.org/ticket/9523)
$error = $error->getMessage();
}
//last username entered by the user
$lastUsername = (null === $session) ? '' : $session->get(SecurityContext::LAST_USERNAME);
$csrfToken = $this->container->has('form.csrf_provider')
? $this->container->get('form.csrf_provider')->generateCsrfToken('authenticate')
: null;
return $this->renderLogin(array(
'last_username' => $lastUsername,
'error' => $error,
'csrf_token' => $csrfToken,
));
}
}
aber wenn ich versuchen zu zeigen, /login-Seite erhalte ich eine leere Seite, keine Ahnung ?!!.
verzeihen Sie mein schlechtes Englisch.
InformationsquelleAutor medkhelifi | 2014-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Symfony version 3.3 und Fosuserbundle version 2.1.0 der obige code funktioniert nicht mehr, bis das hinzufügen von Zeilen in config.yml:
Dies ist vor allem, weil ich immer friendsofsymfony up-to-date Komponist.json
InformationsquelleAutor HMagdy
Ich Fehler behoben, durch den Einsatz von:
EDIT: Danke, das fixen meines Problems.
Werden Sie sicher, dass Sie das nicht mit anderen Basecontroller. Für die index-zum Beispiel, wie bei mir. Sie würde folgende Ausnahme:
Verwendet habe ich:
InformationsquelleAutor medkhelifi
First off, wird Ihr bundle parent gesetzt FOSUserBundle?
Zweitens, haben Sie Ihren cache gelöscht?
Das sollte die akzeptierte Antwort !
InformationsquelleAutor DruiD628
Um jeden, der versucht dies mit Symfony 4, die Sie einfach brauchen, um eine route in der Routen.yaml mit dem gleichen Namen wie die, die Sie überschreiben möchten, und zeigen Sie es zu Ihrem eigenen controller.
InformationsquelleAutor Raphaël Lortie