6

なぜこのエラーが表示されるのかわかりません

The function "dump" does not exist in twig file

私はすでにconfig.ymlファイルに書き込んでいますが:

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

そして小枝ファイルで私はダンプしようとします:

{{ dump(product) }}
4

4 に答える 4

15

lifoからの回答では、debugタグの使用を推奨していますが、debugタグはTwig 1.5で非推奨になり、関数{% debug product %}に置き換えられました。dump{{ dump(product) }}

Symfony Standard Edition 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%が真であることを確認してください。

  4. Twig1.5以降を使用していることを確認してください。

于 2013-05-25T18:08:54.500 に答える
1

まず、「ダンプ」は実際にはコマンドではなく、その「デバッグ」です。次に、構成構文が少し混乱しています。次のようになります。

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

次に、次のようにテンプレートで使用できます{% debug var %}。- {%%}中括弧に注意してください。デバッグは、関数ではなくタグであるため、{{}}中括弧内では機能しません。

于 2012-11-27T13:44:59.267 に答える
0

それは理由かもしれません:

どこに置きましたか

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

それはあなたのバウンドルのconfig.ymlにあるはずです:

nameOfTheBoundle/Resources/config/config.yml

プロジェクトのconfig.ymlにはありません:

app/config/config.yml
于 2012-11-06T15:44:07.627 に答える
0

受け入れられた答えは私にはうまくいきませんでした。私がしなければならなかったのは、AppKernelでDebugBundleを有効にすることだけでした(開発/テスト環境のみ):

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

それだけです。サービスを登録する必要はありません。

于 2016-01-21T12:09:40.730 に答える