166

与えられたものだけを提示するビュー レイヤー パターンは問題ありませんが、利用可能なものをどうやって知るのでしょうか? TWIGに「定義されたすべての変数をリストする」機能はありますか? 変数をダンプする方法はありますか?

検索して見つけた解決策は、関数を挿入することで既存のphpデバッグツールを使用できる関数を定義することでしたが、見つけたすべての参照には、これらの素敵な2行のコードが含まれていますが、どこにも指定されていませんそれらを配置します。$loader変数を定義する必要があるという事実に基づいて、/app/config/autoload.php を試しましたが、そこにある $loader の種類が間違っていました。twig 関数を追加するための php コードはどこに配置すればよいですか?

4

14 に答える 14

264

Twig 1.5 の時点で、正解は dump 関数を使用することです。これは、Twig のドキュメントに完全に記載されていますSymfony2 内でこれを有効にするためのドキュメントは次のとおりです。

{{ dump(user) }}
于 2012-04-09T21:58:22.600 に答える
29

ここdebugに記載されているタグを使用できます。

{% debug expression.varname %}

編集: Twig 1.5 の時点で、これは廃止され、新しい関数に置き換えられましたdump(注: 現在は関数であり、タグではありません)。も参照してください:上記の受け入れられた回答。

于 2011-09-06T10:12:16.790 に答える
17

だから私はそれを機能させました。部分的には少しハックです:

  1. セットtwig: debug: 1インapp/config/config.yml
  2. これを config_dev.yml に追加します

    services:
        debug.twig.extension:
            class: Twig_Extensions_Extension_Debug
            tags: [{ name: 'twig.extension' }]
    
  3. sudo rm -fr app/cache/dev

  4. の代わりに独自のデバッグ機能を使用するにはprint_r()、開いて次のようvendor/twig-extensions/lib/Twig/Extensions/Node/Debug.phpに変更print_r(しましたd(

PS。$twig 環境を取得してフィルターと拡張機能を追加する方法/場所を知りたいです。

于 2011-09-06T10:56:28.227 に答える
15

アプリケーションで Twig をコンポーネントとして使用している場合は、次のようにすることができます。

$twig = new Twig_Environment($loader, array(
    'autoescape' => false
));

$twig->addFilter('var_dump', new Twig_Filter_Function('var_dump'));

次に、テンプレートで:

{{ my_variable | var_dump }}
于 2012-05-03T14:11:55.540 に答える
7

すべてのカスタム変数をダンプします。

<h1>Variables passed to the view:</h1>
{% for key, value in _context %}
    {% if key starts with '_' %}
    {% else %}
        <pre style="background: #eee">{{ key }}</pre>
        {{ dump(value) }}
    {% endif %}
{% endfor %}

それを行うプラグインを使用できます(出力を適切にフォーマットします):

小枝ダンプバー

于 2016-03-05T15:46:57.910 に答える
5

Twig をスタンドアロン コンポーネントとして使用している場合、ダンプ(変数)関数がすぐに動作する可能性は低いため、デバッグを有効にする方法の例を次に示します。

スタンドアロン

これは、icode4food が提供するリンクで見つかりました。

$twig = new Twig_Environment($loader, array(
    'debug' => true,
    // ...
));
$twig->addExtension(new Twig_Extension_Debug());

シレックス

$app->register(new \Silex\Provider\TwigServiceProvider(), array(
    'debug' => true,
    'twig.path' => __DIR__.'/views'
));
于 2014-11-06T11:43:02.920 に答える
3

より簡単に参照できるように、ここに完全なレシピを示します (すべての手順が必須であることに注意してください)。

1) Twig をインスタンス化するときに、debug オプションを渡します。

$twig = new Twig_Environment(
$loader, ['debug'=>true, 'cache'=>false, /*other options */]
);

2) デバッグ拡張機能を追加します

$twig->addExtension(new \Twig_Extension_Debug());

3) @Hazarapet Tunanyan が指摘したように使用する

{{ dump(MyVar) }}

また

{{ dump() }}

また

{{ dump(MyObject.MyPropertyName) }}
于 2016-11-30T14:57:51.933 に答える
1

編集できます

/vendor/twig/twig/lib/Twig/Extension/Debug.php

the var_dump()関数を次のように変更します\Doctrine\Common\Util\Debug::dump()

于 2014-03-14T16:04:30.877 に答える
1

Twig テンプレートをデバッグするには、debug ステートメントを使用できます。

ここに画像の説明を入力

そこで、デバッグ設定を明示的に設定できます。

于 2011-09-06T10:18:47.680 に答える
1

ほとんどの優れた PHP プログラマーは、XDebug を使用して実際にコードを実行し、変数の変化をリアルタイムで監視することを好みますdump()

そのため、Twig Debug 拡張機能を作成して Github に配置しました。

https://github.com/delboy1978uk/twig-debug

composer require delboy1978uk/twig-debug

次に、拡張子を追加します。Symfony を使用していない場合は、次のようにします。

<?php

use Del\Twig\DebugExtension;

/** @var $twig Twig_Environment */
$twig->addExtension(new DebugExtension());

もしそうなら、サービスの YAML 設定で次のようにします:

twig_debugger:
    class: Del\Twig\DebugExtension
    tags:
        - { name: twig.extension }

登録したら、小枝テンプレートのどこでもこれを行うことができます:

{{ breakpoint() }}

これで、XDebug を使用できるようになり、実行が一時停止し、Context と Environment の両方のすべてのプロパティを確認できます。

楽しむ!:-D

于 2018-07-05T14:30:05.997 に答える
0

ダンプ機能を使用して、このように印刷できます

{{ dump(MyVar) }}

しかし、良いことも 1 つあります。ダンプ関数に引数を設定しないと、すべての変数が使用可能であることが出力されます。

{{ dump() }}
于 2016-04-28T21:25:47.853 に答える