4

Symfony 2.3 プロジェクトでTwig StringLoader 拡張機能をアクティブにしようとしていますが、yaml 構文を正しく取得できません。

この投稿は、まったく同じ問題を扱っている投稿でのHeyflynn の回答を参照していますが、(私にとっては) うまくいかない解決策を提供しています。

app/config/config.ymlに次の行を書くと、以下の例外が発生します。

# app/config/config.yml
acme.twig.extension.loader:
class:        Twig_Extension_StringLoader
tags:
     - { name: 'twig.extension' }

私にこれを与えます:

FileLoaderLoadException: リソース「.../app/config/config.yml」を「.../app/config/config_dev.yml」からインポートできません。(「acme.twig.extension.loader」の構成をロードできる拡張機能はありません (.../app/config/config.yml にあります)。名前空間「acme.twig.extension.loader」を探し、「フレームワーク"、"セキュリティ"、"小枝"、"モノログ"、"swiftmailer"、"assetic"、"教義"、"sensio_framework_extra"、"apy_data_grid"、"プロジェクト"、"acme_demo"、"web_profiler"、"sensio_distribution" )

(私はすでにacme.twig.extension.loaderのacmeの外観について疑問に思っていて、それをプロジェクト バンドルの名前に置き換えましたが、同じ例外が再び発生します。それを切り取るだけでも機能しません。)

助けてください!

4

1 に答える 1

8

Twig は acme バンドルの一部ではありません。Twig はベンダー バンドル自体であるため、エラーは正しいです。acme.twig.extension.loader のような名前空間はありません

固定コードは次のようになります。

# services.yml
services:
    twig.extension.stringloader:
        class: Twig_Extension_StringLoader
        tags:
            - { name: twig.extension }

これを追加し/app/config/config.ymlて各バンドルで使用することも、バンドル フォルダーに追加して/Resources/config/services.yml特定のバンドルでのみ使用することもできます。

次に、小枝テンプレートでそれらを次のように使用します。

{{ include(template_from_string(page.template)) }}

上記はSymfony v2.5で機能します

于 2014-08-21T10:09:05.583 に答える