symfony - comment - twig starts with




Come ottenere i parametri di configurazione in Symfony2 Twig Templates (6)

È inoltre possibile sfruttare il sistema di Parametri del servizio integrato, che consente di isolare o riutilizzare il valore:

# app/config/parameters.yml
parameters:
    ga_tracking: UA-xxxxx-x

# app/config/config.yml
twig:
    globals:
        ga_tracking: "%ga_tracking%"

Ora, la variabile ga_tracking è disponibile in tutti i modelli Twig:

<p>The google tracking code is: {{ ga_tracking }}</p>

Il parametro è disponibile anche all'interno dei controller:

$this->container->getParameter('ga_tracking');

Puoi anche definire un servizio come variabile globale di Twig (Symfony2.2 +):

# app/config/config.yml
twig:
    # ...
    globals:
        user_management: "@acme_user.user_management"

http://symfony.com/doc/current/templating/global_variables.html

Se la variabile globale che si desidera impostare è più complicata, ad esempio un oggetto, non sarà possibile utilizzare il metodo precedente. Invece, dovrai creare un'estensione Twig e restituire la variabile globale come una delle voci nel metodo getGlobals.

Ho un modello di Twig Symfony2. Voglio emettere il valore di un parametro di configurazione in questo modello di ramoscello (un numero di versione). Pertanto ho definito il parametro config come questo:

parameters:
    app.version: 0.1.0

Sono in grado di utilizzare questo parametro di configurazione in Controller ma non ho idea di come ottenerlo nel mio modello Twig.


È possibile utilizzare la sostituzione dei parametri nella sezione di ramoscello globale della configurazione:

Parametro di configurazione:

parameters:
    app.version: 0.1.0

Ramig config:

twig:
    globals:
        version: '%app.version%'

Modello di ramoscello:

{{ version }}

Questo metodo offre il vantaggio di consentire l'utilizzo del parametro anche nelle classi ContainerAware , utilizzando:

$container->getParameter('app.version');

Facilmente, puoi definire nel tuo file di configurazione:

twig:
    globals:
        version: "0.1.0"

E accedici nel tuo modello con

{{ version }}

Altrimenti deve essere un modo con un'estensione Twig per esporre i tuoi parametri.


In confing.yml

# app/config/config.yml
twig:
  globals:
    container: '@service_container'

In vista Twig

# twig view
{{ container.parameter('app.version')) }}

Nelle versioni più recenti di Symfony2 (utilizzando parameters.yml posto di parameters.ini ), puoi archiviare oggetti o matrici invece di coppie chiave-valore, così puoi gestire le tue globali in questo modo:

config.yml (modificato solo una volta):

# app/config/config.yml
twig:
  globals:
    project: %project%

parameters.yml:

# app/config/parameters.yml
project:
  name:       myproject.com
  version:    1.1.42

E poi in un file di ramoscello, puoi usare {{ project.version }} o {{ project.name }} .

Nota: Personalmente non mi piace aggiungere cose app , solo perché è la variabile di Symfony e non so cosa verrà memorizzato lì in futuro.


Puoi semplicemente associare $this->getParameter('app.version') nel controller per $this->getParameter('app.version') param e quindi renderizzarlo.





twig