Ich benutze symfony 1.4 mit Doctrine.
Ich versuche einen Weg zu finden, den Debug-Modus nur zu aktivieren, wenn das aktuelle sfUser
eine spezielle debugger
Berechtigung hat.
Ich habe bereits einen Filter erstellt, der die symfony-Debug-Leiste deaktiviert, wenn sfUser
diese Berechtigung nicht hat ( web_debug
wird auf true
in meiner settings.yml
-Datei gesetzt):
Der Code meiner index.php
-Datei lautet:
Das Problem besteht darin, dass der debug
-Modus auf false
in meinem index.php
fest codiert ist und für Debugger ebenfalls deaktiviert ist. Daher zeigt die Web-Debug-Leiste keine Doctrine-Anweisungen oder Timing-Hinweise.
Gibt es eine Möglichkeit, den Debug-Modus nur zu aktivieren, wenn der aktuelle sfUser
eine genaue Berechtigung hat?
Ich habe versucht, sfConfig::set('sf_debug', true);
zu meiner checkWebDebugFilter::execute()
-Methode hinzuzufügen, aber da der Filter nach Doctrine-Anweisungen ausgeführt wird, werden sie nicht aufgezeichnet.
Ich habe auch versucht, session_start();
in meiner index.php
-Datei hinzuzufügen und dann die $_SESSION
-Variable zu durchsuchen, um zu prüfen, ob der aktuelle Benutzer die Berechtigung debugger
hat, aber nicht (und nicht der Geist der Symfonie entweder).
Vielen Dank im Voraus für Ihre Antworten.
Wenn Sie den debug-Parameter in der index.php-Datei übergeben, wird er tatsächlich an die sfApplicationConfiguration-Klasse Ihrer Anwendung übergeben. In Ihrem Fall befindet es sich in der Datei /apps/frontend/config/frontendConfiguration.class.php . Die frontendConfiguration-Klasse erweitert sfApplicationConfiguration und hier können Sie Ihren Code hinzufügen.
Der Debug-Parameter wird in einer geschützten Variablen dieser Klasse gespeichert. Sie können ihn also nicht vom Filter ändern, aber Sie können beispielsweise eine Funktion erstellen:
%Vor%Und rufe es in deinem Filter auf:
%Vor%Sie könnten auch die Funktion isDebug () in der frontendConfiguration-Klasse überschreiben, da diese in der Funktion initConfiguration () verwendet wird, um Timing-Indikatoren und andere Debug-Sachen zu initialisieren.
%Vor%Sie können hier jedoch keine Benutzerberechtigungen überprüfen, da die sfUser-Klasse in dieser Phase noch nicht initialisiert wird. Sie können jedoch die globalen Variablen $ _COOKIES oder $ _SESSION auf einen Wert überprüfen, den Sie beim Anmelden des Benutzers festlegen können. Oder Sie können in Ihrem Filter sfWebDebugPanelTimer :: startTime () aufrufen, aber einige Mikrosekunden verpassen.
Ich habe das nicht getestet, aber so würde ich es machen.
Versuchen Sie es
Wenn Sie den Modus Web_debug panel (dev) aktivieren möchten,
oder
schreibe in deine index.php 'frontend', 'dev', true.
require_once (Verzeichnisname ( FILE ). '/ .. / config / ProjectConfiguration.class.php'); $ configuration = Projektkonfiguration :: getApplicationConfiguration ('frontend', 'dev', true)); sfContext :: createInstance ($ Konfiguration) - & gt; dispatch ();