0

Symfony2 で FOS UserBundle のテンプレートをオーバーライドしたいので、カスタム UserBundle を適応させようとしています。

私はテンプレートを作成し (そして FOS バンドルとまったく同じ構造に従いました)、すべてのコントローラーに対して「空の」拡張機能を作成しました。

ただし、オーバーライドをアクティブにしてキャッシュをクリアし、ログインしようとするとすぐにエラーが発生し、理由がわかりません。エラーは次のとおりです。

"FOSUserBundle:Security:login.html.twig" で、テンプレートのレンダリング中に例外がスローされました ("Route "login" does not exist.")。

たとえば、これは私自身の SecurityController です。

<?php

namespace R\Bundle\UserBundle\Controller;

use Symfony\Component\HttpFoundation\RedirectResponse;
use FOS\UserBundle\Controller\SecurityController as BaseController;

class SecurityController extends BaseController
{ }

(キャッシュをクリアする前に) オーバーライドを有効にするということは、次の行のコメントを外すことを意味します。

<?php

namespace R\Bundle\UserBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class RUserBundle extends Bundle
{
 public function getParent()
 {
    return 'FOSUserBundle'; <-- this line activates or deactivates the override
 }
}

私自身の UserBundle の login.html.twig テンプレートは、FOS UserBundle のテンプレートをオーバーライドするはずですが、元のテンプレートの正確なコピーです (オーバーライドがアクティブでない場合は正常に機能します)。

何らかの方法でルーティング ファイルもオーバーライドする必要があると思いますが、それらをカスタム UserBundle にコピーすると、エラーが残ります。

4

2 に答える 2

1

ルートloginは含まれません。それを含める必要があります。手順 6を参照してください。

# app/config/routing.yml
fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"
于 2013-02-05T15:06:09.730 に答える
0

エラーは実際にはまったく異なるものでした:

小枝スニペットが (テンプレートの複雑な階層で) 誤って呼び出され、古いパス名が含まれていました。このパスは login と呼ばれていたので、エラーは新しくアクティブ化した UserBundle に関係があると確信しました。そのため、Symfony2 は完全に間違った場所を示しました。エラーはそこの近くには見つかりませんでした;)

于 2013-02-05T15:57:09.573 に答える