13

Silexのドキュメントによると:

Symfony は、いくつかの Symfony2 コンポーネントと Twig の間の追加の統合を提供する Twig ブリッジを提供します。composer.json ファイルに依存関係として追加します。

composer.jsonファイルに以下を含めます。

{
    "require": {
        "silex/silex": "1.*",
        "twig/twig": ">=1.8,<2.0-dev",
        "symfony/twig-bridge": "2.3.*"
    }
}

TwigServiceProvider()私は次のように登録します:

$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__ . '/views'
));

私は小枝のpath()方法を次のように使用しようとしています:

<a href="{{ path('logout') }}">Log out</a>

私が得るエラーは次のとおりです。

Twig_Error_Syntax: 関数「パス」が存在しません

このエラーが発生するのはなぜですか?

  • バージョンの問題かどうかを確認するために、バージョンを切り替えてみました
  • 1 つの Google グループのコメントで、小枝ブリッジ プロバイダーの「登録」が提案されましたが、これは存在しません
  • 使用する必要はありません:代わりにapp.url_generator.generateすべてのテンプレートで

私が見つけた一時的な解決策:

UrlGeneratorServiceProvider()が登録されていることを確認します。

$app->register(new UrlGeneratorServiceProvider());

twig の新しい関数を作成しますpath()

$app['twig']->addFunction(new \Twig_SimpleFunction('path', function($url) use ($app) {
    return $app['url_generator']->generate($url);
}));

こんなことしなくていいんだよ!! これを正しく機能させるにはどうすればよいですか?

4

3 に答える 3