Symfony 2 Rufen Sie eine Funktion in einer Controller-Methode auf

8

Ich habe eine Methode in einem Controller sagen so. In der Tat muss ich eine Funktion checkLogin deklarieren, so dass ich in mehreren Controller-Methode wie folgt verwenden kann:

%Vor%

In dem obigen Fall, wenn ich es so mache, bekomme ich den folgenden Fehler:

Schwerwiegender Fehler: Rufen Sie die nicht definierte Funktion NouPei \ WebSiteBundle \ Controller \ checkLogin () in /home/noor/noupei/website/WebSiteBundle/Controller/DefaultController.php in Zeile 142

auf     
Noor 24.01.2012, 11:55
quelle

4 Antworten

21

Es ist eine Methode, keine Funktion:

%Vor%     
meze 24.01.2012, 12:22
quelle
17

Sie können die Funktion wie folgt aufrufen:

%Vor%     
Chopchop 24.01.2012 14:25
quelle
5

Für die Kontoverwaltung in Symfony 2 sollten Sie das Sicherheitsmanagement von Symfony 2 verwenden ( hier ). Sie können die Benutzeranmeldung wie folgt überprüfen:

%Vor%

Quelle

Wenn Sie die Symfony 2-Sicherheitsverwaltung nicht verwenden möchten, sollten Sie die Dienste verwenden Methoden für jeden Controller verfügbar.

    
BlackCharly 24.01.2012 12:06
quelle
1

Es gibt mehrere Möglichkeiten, dies zu tun:

  1. Verwenden Sie die von Symfony bereitgestellte Firewall. Sie können es in app / config / security.yml konfigurieren  unter access_control:      - {Pfad: ^ / anyurl-form / Muster $, Rolle: ROLE_USER}

    mit dieser Methode: Symfony wird die Gültigkeit der Sitzung überprüfen. Wenn die Sitzung ungültig ist, wird der Benutzer automatisch zur Anmeldeseite umgeleitet, und ein nicht authentifizierter Benutzer kann diese Seiten nie aufrufen, wenn er nicht angemeldet ist.

    Die Implementierung dieser Methode hat mehrere Optionen, bevor sie funktioniert. Möglicherweise müssen Sie einen eigenen Provider erstellen oder einen bestehenden verwenden. Ich empfehle FOSUserBundle . Dieses Bundle bietet verschiedene Möglichkeiten, den Benutzer zu verwalten. Eine weitere Option ist die Erstellung eines eigenen Anbieters , wenn Sie extern speziell validieren möchten, wenn Sie api's (SOA) , um die Authentizität des Benutzers zu überprüfen.

  2. Wenn Sie eine Methode hinzufügen möchten, die für alle Controller verwendet wird. Entweder Sie erstellen eine Klasse, die den Symfony-Controller erweitert:

    Klasse BaseController erweitert Controller {   geschützte Funktion checkLogin () {} }

    class DefaultController erweitert BaseController {   öffentliche Funktion testAction ()   {     $ loggedIn = $ this- & gt; checkLogin ();   } }

Oder Sie können ein Merkmal erstellen und es in Ihren Controller einfügen.

%Vor%

Aber ich empfehle dringend, die Firewall für Sicherheitszwecke zu verwenden und bietet eine Menge Funktionalität und Sicherheitsprüfung.

    
Francis Alvin 07.03.2014 07:35
quelle

Tags und Links