2012-08-28 5 views
6

Nie wiem, dlaczego to pokazuje ten błądDlaczego funkcja `dump` nie istnieje w pliku twig?

The function "dump" does not exist in twig file 

Chociaż mam już napisany w config.yml pliku:

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

aw pliku gałązka staram się zrzucić z:

{{ dump(product) }} 
+0

Nie jestem pewien, czy skopiowałeś go źle, ale musisz wgrać wszystkie linie poniżej usług: linia –

+0

@CarlosGranados ah ... Właśnie napisałem tę samą odpowiedź: S –

+0

Jeśli wcięcie było nieprawidłowe, założę się, że wystąpiłby błąd podczas ładowania konfiguracji dla nieistniejącej sekcji. –

Odpowiedz

15

Odpowiedź z LIFO zachęca do korzystania tag debug, ale debug tag {% debug product %} została zaniechana w Gałązka 1.5 i zastąpiono dump funkcji {{ dump(product) }}.

Właściwa rozbudowa, aby umożliwić jak z Symfony Standard Edition 2.0.9 jest Twig_Extension_Debug i powinny być dodane do app/config/config_dev.yml więc jest ładowany tylko w środowisku dev:

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

Należy następnie móc korzystać {{ dump(product) }} w twoich szablonach.

Jeśli problem nadal występuje, można spróbować kilku rzeczy:

  1. Zastosowanie php app/console container:debug twig.extension.debug --env=dev aby zapewnić pojemnik wtrysk zależność jest prawidłowo podnosząc swoją definicję usługi.

    [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. Otwórz skompilowane klasy pojemnik wtrysk zależność dla środowiska dev i szukać Twig_Extension_Debug aby sprawdzić, czy jakakolwiek inna usługa została już zdefiniowana, aby go używać. Plik ten ma numer app/cache/dev/appDevDebugProjectContainer.php

  3. Upewnij się, że parametr %kernel.debug% jest prawdziwy.

  4. Upewnij się, że używasz Twig 1.5 lub nowszego.

+0

dzięki za dobry wysiłek. – Sid

+0

Rzeczywiście, dziękuję za aktualizację. Moja odpowiedź nie jest już całkowicie poprawna. – lifo

+0

4. Jak sprawdzić, czy używasz Twig 1.5 lub nowszego? Używam Symfony 2.5, ale mój composer.json wymienia tylko "twig/extensions": "~ 1.1.0", więc wygląda na to, że główna gałązka jest mocno zakodowana w symfony, ponieważ kiedy robię "aktualizację kompozytora" zaktualizowano ją z wersji 1.15 do 1.16. –

0

Może to być przyczyna:

Gdzie umieściłeś e

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

To powinno być w config.yml swojej Z zestaw w:

nameOfTheBoundle/Resources/config/config.yml 

a nie w config.yml z projeft w:

app/config/config.yml 
1

pierwszego "dump" tak naprawdę nie jest to polecenie, jego "debugowanie". Po drugie, twoja składnia konfiguracji jest trochę pomieszana. Powinno to wyglądać mniej więcej tak:

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

Wtedy można go używać w szablonach tak: {% debug var %} - Uwaga na {%%} szelkami. Debugowanie nie działa w ramach {{}} nawiasów klamrowych, ponieważ jest to TAG, a nie FUNKCJA.

+1

'{% debug%}' został wycofany w Twig 1.5 i zastąpiony przez funkcję '{{dump()}}. Zobacz moją odpowiedź na zaktualizowane użycie. –

+0

To zadziałało dla mnie. Musi używać starszej wersji Twig. Dzięki. –

0

Przyjęta odpowiedź nie działa dla mnie.Wszystko co musiałem zrobić, to włączyć DebugBundle w AppKernel (w dev/tylko środowisk testowych):

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

i to było to. Nie trzeba rejestrować żadnych usług.

+0

To pytanie jest związane ze starszą wersją symfony2. Proszę zobaczyć datę !! – Sid

Powiązane problemy