2012-08-28 42 views
6

我不知道爲什麼會出現這種錯誤爲什麼函數`dump`不存在於樹枝文件中?

The function "dump" does not exist in twig file 

,而我在config.yml文件已經writen:

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

和樹枝文件我嘗試轉儲:

{{ dump(product) }} 
+0

不知道如果你複製它錯了,但你需要縮進服務下面的所有行:行 –

+0

@CarlosGranados啊......我剛剛發佈了相同的答案:S –

+0

如果縮進是錯誤的,我打賭他會有一個錯誤當加載配置爲一個不存在的部分。 –

回答

15

從後進先出答案鼓勵您使用debug標籤,但標籤debug{% debug product %}嫩枝1.5已被廢棄,並與dump功能{{ dump(product) }}取代。

適當延長,以使作爲Symfony的標準版2.0.9的是Twig_Extension_Debug,應該被加入到app/config/config_dev.yml,所以只能通過加載在開發環境:

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

然後,您應該能夠使用{{ dump(product) }}在您的模板中。

如果問題仍然存在,你可以嘗試的幾件事情:

  1. 使用php app/console container:debug twig.extension.debug --env=dev保證了依賴注入容器被正確拿起你的服務定義。

    [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. 打開編譯依賴注入容器類的開發環境和搜索Twig_Extension_Debug,看是否有其他服務已經定義使用它。此文件生活在app/cache/dev/appDevDebugProjectContainer.php

  3. 確保參數%kernel.debug%爲true。

  4. 確保您使用的是Twig 1.5或更高版本。

+0

感謝您的努力。 – Sid

+0

的確,感謝您的更新。我的回答不再完全正確。 – lifo

+0

4.您如何檢查您是否使用Twig 1.5或更高版本?我使用的是Symfony 2.5,但是我的composer.json只列出了「twig/extensions」:「〜1.1.0」,所以看起來主要的細枝是用symfony編碼的,因爲當我做'composer update'時,它從1.15更新到1.16。 –

0

可能是這個原因:

你把哪裏放在哪Ë

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

它應該是在你的boundle的config.yml:

nameOfTheBoundle/Resources/config/config.yml 

,而不是在projeft的config.yml:

app/config/config.yml 
1

首先, 「場」實際上並不是命令,它的「調試」。其次,你的配置語法有點搞砸了。它應該是這個樣子:

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

然後你可以使用它在你的模板是這樣的:{% debug var %} - 注意{} %%括號。調試在{{}}大括號中不起作用,因爲它是一個TAG而不是一個FUNCTION。

+1

「{%debug%}」在Twig 1.5中被棄用,並被替換爲{{dump()}}函數。查看我的答案以獲取更新的用法 –

+0

這對我有用。必須使用較舊的Twig版本。謝謝。 –

0

接受的答案不適用於我。我所要做的只是啓用AppKernel中的DebugBundle(僅在開發/測試環境中):

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

就是這樣。無需註冊任何服務。

+0

此問題與symfony2舊版本有關。請看日期! – Sid