Aktivieren Sie den Debug-Modus interaktiv in Symfony

9

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):

%Vor%

Der Code meiner index.php -Datei lautet:

%Vor%

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.

    
Phen 11.03.2011, 17:42
quelle

2 Antworten

1

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.

    
georgelx 10.05.2011 15:40
quelle
-1

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 ();

    
Prakash 15.03.2011 10:55
quelle

Tags und Links