0

Silex マイクロフレームワークで遊んでいます。まず、composer を使用して Twig 用の Twig 拡張機能をインストールしました。

composer require twig/extensions

この構成をフロント コントローラー (index.php) に追加しました。

// CONFIG 
    // turn on debug in Silex microframework
    $app['debug'] = true;

    // set default twig file location
    // turn on debuging for Twig extension in Silex
    $app->register(new Silex\Provider\TwigServiceProvider(), array(
            'twig.path' => __DIR__.'/../templets',
            'twig.options' => array('debug' => true),
        )
    );
    $app['twig']->addExtension(new Twig_Extension_Debug());

   // Symfony2 extension for building and validating forms in Silex
   $app->register(new Silex\Provider\FormServiceProvider());
   $app->register(new Silex\Provider\ValidatorServiceProvider());
   $app->register(new Silex\Provider\TranslationServiceProvider());

すべてが期待どおりに動作するようにシミュレートされますが、ウィジェットを使用してフォームを作成する場合

{{ form_widget(form) }}

Twig デバッガーから次のエラーが表示されます。

1/1 ExpressionParser.php 行 573 の Twig_Error_Syntax: 行 35 の「post.twig」の不明な「form_widget」関数。

このコード行をコメントアウトすると:

// $app['twig']->addExtension(new Twig_Extension_Debug());

私のフロントコントローラーでは、すべてが正常に機能し、フォームは問題なくレンダリングされます。

これは twig デバッグ拡張の問題ですか? おそらくいくつかの非互換性?.

小枝でフォームをレンダリングするために widget_form を使用する必要はありません。小枝でレンダリングを適切に記述する前に、簡単なテスト目的でのみ使用しますが、小枝がこれに対してエラーをスローする理由はまだわかりません。

これは私のcomposer.jsonです

{
    "require": {
        "silex/silex": "~1.3",
        "symfony/browser-kit": "~2.3",
        "symfony/console": "~2.3",
        "symfony/config": "~2.3",
        "symfony/css-selector": "~2.3",
        "symfony/dom-crawler": "~2.3",
        "symfony/filesystem": "~2.3",
        "symfony/finder": "~2.3",
        "symfony/form": "~2.3",
        "symfony/locale": "~2.3",
        "symfony/process": "~2.3",
        "symfony/security": "~2.3",
        "symfony/serializer": "~2.3",
        "symfony/translation": "~2.3",
        "symfony/validator": "~2.3",
        "symfony/monolog-bridge": "~2.3",
        "symfony/twig-bridge": "~2.3",
        "doctrine/dbal": ">=2.2.0,<2.4.0-dev",
        "swiftmailer/swiftmailer": "5.*",
        "twig/extensions": "^1.3"
    }
}
4

2 に答える 2

0

この例で問題が解決されたと思います(Pimpleに拡張機能を含める新しい方法):

// CONFIG 

    // turn on debug in silex
    $app['debug'] = true;

    // register twig and enable debug
    $app->register(new Silex\Provider\TwigServiceProvider(), array(
            'twig.path' => __DIR__.'/../templets',
            'twig.options' => array('debug' => true),
        )
    );

        // add twig debug extension in Pimpel (the new way)
        $app['twig'] = $app->share($app->extend('twig', function($twig, $app) {
            $twig->addExtension(new \Twig_Extension_Debug());
            return $twig;
        }));
于 2015-11-13T06:09:50.500 に答える