0

Symfony 2.1 から 2.2 にアップグレードしました。ここに記載されている指示に従いました:

http://symfony.com/blog/symfony-2-2-0
https://github.com/symfony/symfony/blob/2.2/UPGRADE-2.2.md

以前はすべてのコードが問題なく動作していましたが、アプリケーションで何かを実行しようとすると、フレームワークが URL に「_fragment」を挿入するという問題が発生しています。これにより、URL が次のように変更されます。

http://server/app_dev.php/en-GB/

に:

http://server/app_dev.php/_fragment/

これは twig によってロケールとして取得され、次のエラーで失敗します。

An exception has been thrown during the rendering of a template
("Circular reference detected when adding a fallback catalogue for locale "".")
in "/var/....../HomeBundle/Resources/views/Home/index.html.twig".

2/2 Twig_Error_Runtime: An exception has been thrown during the rendering of a template 
("Circular reference detected when adding a fallback catalogue for locale "".") 
in "/var/...../HomeBundle/Resources/views/Home/index.html.twig"
1/2 LogicException: Circular reference detected when adding a fallback catalogue for locale "".

バックトレースの一部は次のように述べています。

DEBUG - Notified event "kernel.exception" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException". 
DEBUG - Notified event "kernel.exception" to listener "Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException". 
CRITICAL - Uncaught PHP Exception Twig_Error_Runtime: "An exception has been thrown during the rendering of a template ("Circular reference detected when adding a fallback catalogue for locale "".") in "/var/...../HomeBundle/Resources/views/Home/index.html.twig"." at /var/...../app/cache/dev/classes.php line 6030 
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". 

アプリケーションに初めてログインすると、すべて正常に動作しているように見えます。リクエストには、ロケールが次のようにリストされます。

_locale     "en-GB"
_route      "_home_index"
_route_params   "Array(_locale => en-GB)"

ただし、別のリンク (同じページに戻ることを含む) をクリックすると、上記のエラーで失敗し、要求が次のように変更されます。

_locale     "_fragment"
_route      "_home_index"
_route_params   "Array(_locale => _fragment)"

私のルーティング(上記の例の場合)は次のようになります。

Home_Home:
    resource:   "@HomeBundle/Controller/HomeController.php"
    type:       annotation
    prefix:     /{_locale}
    defaults:   { _locale: en }

私の設定:

framework:
    translator:      { fallback: en }
    default_locale:  en

問題はロケール処理ではなく、Symfony 2.2 に追加された新しいフラグメント サブ処理フレームワークにあると思います。おそらく、何らかの方法で呼び出されているか、アクティブ化されていますか? (または、ある種の構成がありません)。

4

1 に答える 1