Service-Methode als globale Variable twig

8

In meiner symfony2-Anwendung habe ich eine getPorfolioUser-Methode, die eine bestimmte Benutzervariable zurückgibt.

Ich freue mich darauf,

anrufen zu können
  

{% if portfolio_user%}

im Zweig. Ich habe nicht verstanden, wie ich das als globale Variable einstellen könnte, da ich in der Dokumentation unter der Impression nur fixe Elemente oder Dienste setzen kann, aber keine Methoden der Dienste.

Muss ich dafür eine Erweiterung oder einen Helfer schreiben? Was ist der einfachste Weg, dies zu tun?

Danke!

    
Sébastien 04.03.2015, 19:08
quelle

4 Antworten

11

Sie können Ihren benutzerdefinierten Service wie folgt als twig globals variable definieren:

in der Datei config.yml

%Vor%

Verwenden Sie eine Twig-Datei

%Vor%

Hoffen Sie diese Hilfe

    
Matteo 05.03.2015, 06:45
quelle
4

Ein Ansatz besteht darin, einen CONTROLLER-Ereignis-Listener zu verwenden. Ich benutze gerne CONTROLLER anstelle von REQUEST, weil es sicherstellt, dass alle regulären Request-Listener ihr Ding schon gemacht haben.

%Vor%

Hörer sind hier dokumentiert: Ссылка

Ein anderer Ansatz wäre, den Zweig global zu vermeiden und nur einen Zweig-Erweiterungsruf zu machen. Ссылка

So oder so funktioniert es.

    
Cerad 04.03.2015 19:59
quelle
1

Wenn du hier schaust: Ссылка

Sie können dies lesen:

  

Die App-Variable ist überall verfügbar und bietet Zugriff auf viele   häufig benötigte Objekte und Werte. Es ist eine Instanz von   GlobalVariables.

GlobalVariables ist Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables

Ich tue es nie, aber ich denke, ein Weg besteht darin, diese Klasse zu überbieten, um Ihre speziellen Bedürfnisse zu berücksichtigen.

    
pbenard 04.03.2015 20:03
quelle
0

Ich hatte auch Schwierigkeiten damit und habe es schließlich gelöst, indem ich Folgendes getan habe:

  1. Richten Sie Ihr Bundle ein (z. B. MyVendor / MyBundle)

    %Vor%

  1. Erstellen Sie in Ihrem Bundle-Verzeichnis die Klassifikationsdatei MyService.php im Ordner DependencyInjection .

  1. Erstellen Sie in dieser Klassendatei die Funktion

    %Vor%

  1. Erstellen Sie in app / config / services.yml einen neuen Dienst wie folgt:

    %Vor%

  1. In app / config / config.yml unter twig Konfigurationsabschnitt

    %Vor%

  1. Dann können Sie in Ihren Zweigvorlagen die Variable wie folgt referenzieren:

    %Vor%

DISCLAIMER

so habe ich es zur Arbeit gebracht ....

hoffe das hilft.

    
Craig Wayne 05.07.2016 20:20
quelle