2017-01-10 1 views
1

タイトルが示唆しているように、FOSUserBundleのテンプレートを独自のテンプレートでカスタマイズしようとしています。しかし、それは全く機能しません。私は見つけたすべての記事ですべてを試してみました。すべてを校正し、キャッシュを何千回もクリアしましたが、まだ動作していません。 getParentとFOSUserBundleのテンプレートを継承からオーバーライドする

バンドルクラス:

<?php 
// src/PLL/UserBundle/PLLUserBundle.php 

namespace PLL\UserBundle; 

use Symfony\Component\HttpKernel\Bundle\Bundle; 

class PLLUserBundle extends Bundle 
{ 
    public function getParent() 
    { 
    return 'FOSUserBundle'; 
    } 
} 
?> 

テンプレートオーバーライドする必要がありますFOS' 1:

{# src/PLL/UserBundle/Resources/views/layout.html.twig #} 

{% extends "PLLCoreBundle::layout.html.twig" %} 

{% block body %} 

    {% for key, messages in app.session.flashbag.all() %} 
    {% for message in messages %} 
     <div class="alert alert-{{ key }}"> 
     {{ message|trans({}, 'FOSUserBundle') }} 
     </div> 
    {% endfor %} 
    {% endfor %} 

    {% block fos_user_content %} 
    {% endblock fos_user_content %} 

{% endblock %} 

FOS」テンプレート、実際にsymfonyによって使用されている1:

{# vendor/friendsofsymfony/user-bundle/Resources/views/layout.html.twig #} 

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8" /> 
    </head> 
    <body> 
     <div> 
      {% if is_granted("IS_AUTHENTICATED_REMEMBERED") %} 
       {{ 'layout.logged_in_as'|trans({'%username%': app.user.username}, 'FOSUserBundle') }} | 
       <a href="{{ path('fos_user_security_logout') }}"> 
        {{ 'layout.logout'|trans({}, 'FOSUserBundle') }} 
       </a> 
      {% else %} 
       <a href="{{ path('fos_user_security_login') }}">{{ 'layout.login'|trans({}, 'FOSUserBundle') }}</a> 
      {% endif %} 
     </div> 

     {% if app.request.hasPreviousSession %} 
      {% for type, messages in app.session.flashbag.all() %} 
       {% for message in messages %} 
        <div class="flash-{{ type }}"> 
         {{ message }} 
        </div> 
       {% endfor %} 
      {% endfor %} 
     {% endif %} 

     <div> 
      {% block fos_user_content %} 
      {% endblock fos_user_content %} 
     </div> 
    </body> 
</html> 

/web/app_dev.php/loginに行くと、キャッシュの削除後もFOSのレイアウトが表示されますrを繰り返します。いずれかのPHPのビン/コンソールキャッシュ:クリア、または私のプロジェクトのルート内のvarフォルダを "手作業で"削除する。私のブラウザのキャッシュも削除されました。

言うまでもなく、「PLLCoreBundle :: layout.html.twig」を拡張することは、自分のウェブサイトの他のビューでも正常に機能します。だから私はそれが私の小枝のテンプレートのエラーから来るとは思わない。

彼らは任意の助けになることができた場合には、

私のsecurity.ymlファイル:

// app/config/security.yml 

security: 
[...] 
    firewalls: 
     main: 
      pattern: ^/ 
      anonymous: true 
      provider: main 
      form_login: 
       login_path: fos_user_security_login 
       check_path: fos_user_security_check 
      logout: 
       path: fos_user_security_logout 
       target: /platform 
[...] 

アプリのルーティングファイル:

// app/config/routing.yml 

[...] 

fos_user_security: 
    resource: "@FOSUserBundle/Resources/config/routing/security.xml" 

fos_user_profile: 
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml" 
    prefix: /profile 

fos_user_register: 
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml" 
    prefix: /register 

fos_user_resetting: 
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml" 
    prefix: /resetting 

fos_user_change_password: 
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml" 
    prefix: /profile 

ので...私は何をしないのです?

+0

http://stackoverflow.com/questions/41572723/symfony-3-fosuserbundle-overriding-template – Aerendir

+0

しかし、機能しないテンプレートや1つだけのテンプレートはありますか?私は分かりません – Aerendir

+0

@Aerendir FOSUserBundleのデフォルトテンプレートが動作しています。ウェブサイトの他のすべてのテンプレートが動作しています。唯一うまくいかないのは、私のカスタムテンプレートがFOSのものを上書きしないためです。私が/ loginページや/ registerに行きたいとき、私はいつもFOSのテンプレートにアクセスし、私の仕事はできません。 – Kishlin

答えて

1

私が正しく理解していれば、ログイン用のテンプレートや登録用のテンプレートなど、FOSUserBundleのテンプレートを上書きする必要があります。

これを行うには、vendor/friendsofsymfony/user_bundle/Resources/viewsからapp/Resources/FOSUserBundle/viewsにすべてのdirs /ファイルを手動でコピーする必要があります。

ログインページのテンプレートを変更する場合は、独自のテンプレートをapp/Resources/FOSUserBundle/views/Security/login_content.html.twigに置くことができます。

+0

これは、継承を使用してテンプレートをオーバーライドできないことを意味します.App/Resourcesメソッドを使用する必要がありますか? – Kishlin

+0

はい、継承も使用できます。そのためには、 'app/Resources/FOSUserBundle/views/layout.html.twig'を使う必要があります。そして、この 'layout.html.twig'は' bootstrap' CSSフレームワークを 'base.html.twig'から継承することができます。またはあなたが望むかもしれない何か。すべてのテンプレート( 'Security/login.html.twig'や' Registration/register.html.twig'など)は 'layout.html.twig'から継承しています。コピーしたテンプレートでちょっと遊んでみて、どのように動作するかを把握しましょう。 –

+0

よろしいですか。私は、FOSUserBundleからgetParent()メソッドを継承したバンドルからテンプレートを直接オーバーライドすることができると考えました。その後、app/Resourcesフォルダを使って作業します。ありがとう。 – Kishlin

関連する問題