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"
}
}