2012-08-28 11 views
6

non so il motivo per cui si vede questo errorePerché la funzione `dump` non esiste nel file twig?

The function "dump" does not exist in twig file 

mentre ho già writen in config.yml di file:

services: 
product_store.twig.extension.debug: 
    class: Twig_Extension_Debug 
    tags: 
     - { name: 'twig.extension' } 

e nel file di ramoscello cerco di scaricare con:

{{ dump(product) }} 
+0

Non so se lo hai copiato male ma hai bisogno di rientrare tutte le righe sotto i servizi: riga –

+0

@CarlosGranados ah ... Ho appena postato la stessa risposta: S –

+0

Se il trattino era sbagliato Scommetto che avrebbe un errore quando si carica la configurazione per una sezione non esistente. –

risposta

15

La risposta da LIFO si incoraggia a utilizzare il tag debug, ma il debug tag {% debug product %} è stata sconsigliata a Twig 1.5 e sostituito con la funzione {{ dump(product) }}dump.

L'estensione corretta per consentire al Symfony Standard Edition 2.0.9 è Twig_Extension_Debug e dovrebbero essere aggiunti al app/config/config_dev.yml quindi viene caricato solo nell'ambiente dev:

services: 
    twig.extension.debug: 
     class: Twig_Extension_Debug 
     tags: [{ name: 'twig.extension' }] 

Si dovrebbe quindi essere in grado di utilizzare {{ dump(product) }} nei tuoi modelli.

Se un problema persiste, si può provare un paio di cose:

  1. Usa php app/console container:debug twig.extension.debug --env=dev per assicurare il contenitore iniezione di dipendenza sia correttamente in ripresa tua definizione di servizio.

    [container] Information for service twig.extension.debug 
    
    Service Id  twig.extension.debug 
    Class   Twig_Extension_Debug 
    Tags 
        - twig.extension    () 
    Scope   container 
    Public   yes 
    Synthetic  no 
    Required File - 
    
  2. Aprire la dependency injection classe contenitore compilato per l'ambiente dev e la ricerca di Twig_Extension_Debug per vedere se qualsiasi altro servizio è stato già definito per usarlo. Questo file vive a app/cache/dev/appDevDebugProjectContainer.php

  3. Verificare che il parametro %kernel.debug% sia vero.

  4. Assicurarsi di utilizzare Twig 1.5 o successivo.

+0

grazie per il tuo sforzo. – Sid

+0

Infatti, grazie per l'aggiornamento. La mia risposta non è più completamente corretta. – lifo

+0

4. Come si controlla se si utilizza Twig 1.5 o versione successiva? Sto usando Symfony 2.5 ma il mio compositore.json elenca solo "twig/extensions": "~ 1.1.0", quindi sembra che il ramoscello principale sia hard coded in symfony perché quando eseguo 'compositore update' viene aggiornato da 1.15 a 1.16. –

0

Potrebbe essere il motivo:

Dove hai messo e

services: 
    product_store.twig.extension.debug: 
    class:  Twig_Extension_Debug 
    tags: 
    - { name: 'twig.extension' } 

Dovrebbe essere in config.yml della vostra boundle in:

nameOfTheBoundle/Resources/config/config.yml 

e non in config.yml della projeft in:

app/config/config.yml 
1

In primo luogo, "dump" non è in realtà il comando, il suo "debug". In secondo luogo, la sintassi di configurazione è un po 'incasinata. Esso dovrebbe essere simile a questo:

services: 
    twig.extension.debug: 
     class: Twig_Extensions_Extension_Debug 
     tags: 
      - { name: twig.extension } 

quindi è possibile utilizzare nel tuo template in questo modo: {% debug var %} - Nota il {} %% bretelle. Il debug non funziona all'interno delle parentesi graffe {{}} perché è un TAG e non una FUNZIONE.

+1

'{% debug%}' è stato deprecato in Twig 1.5 e sostituito con la funzione '{{dump()}}'. Vedi la mia risposta per l'utilizzo aggiornato. –

+0

Questo ha funzionato per me. Deve utilizzare una versione precedente di Twig. Grazie. –

0

La risposta accettata non ha funzionato per me.Tutto quello che dovevo fare era di permettere al DebugBundle in AppKernel (in dev/ambienti di test solo):

$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); 

e che è stato. Non è necessario registrare alcun servizio.

+0

Questa domanda è correlata alla vecchia versione di symfony2. Si prega di vedere la data !! – Sid

Problemi correlati