2017-01-10 6 views
1

Как видно из названия, я пытаюсь настроить шаблоны FOSUserBundle с моими собственными. Но это совсем не работает. Я пробовал все, как указано в каждой записи, которую я нашел, исправил все, очистил кеш тысячи раз, все еще не работая.Переопределение шаблонов FOSUserBundle от наследования

Bundle класс с GetParent:

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

namespace PLL\UserBundle; 

use Symfony\Component\HttpKernel\Bundle\Bundle; 

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

Шаблон, который должен переопределить ФОС один:

{# 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:

{# 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, даже после удаления кеша ove r и снова. Либо с кешем php bin/console: очистить или удалить «вручную» папку 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

Но являются ли шаблоны, которые не работают, или только один? Я не понимаю – Aerendir

+0

Шаблоны по умолчанию для Aerendir FOSUserBundle. Мой шаблон для всего остального на веб-сайте работает. Единственное, что не работает, это мои настраиваемые шаблоны, не переопределяющие FOS 'one, поэтому, когда я хочу перейти на мою/регистрационную страницу или/зарегистрироваться, я всегда получаю шаблоны FOS и не могу заставить мои работать. – Kishlin

ответ

1

Если я правильно понял, вам нужно переопределить шаблоны FOSUserBundle, например, для входа в систему или для регистрации, и так далее.

Для этого вам необходимо скопировать вручную все файлы/файлы с vendor/friendsofsymfony/user_bundle/Resources/views в app/Resources/FOSUserBundle/views.

И затем, если вы хотите изменить шаблон для страницы входа, вы можете разместить свой собственный шаблон в app/Resources/FOSUserBundle/views/Security/login_content.html.twig.

+0

Итак, означает ли это, что мы больше не можем переопределять шаблоны с наследованием, и мы должны использовать метод app/Resources? – Kishlin

+0

Да, вы также можете использовать наследование. Для этого вы должны использовать 'app/Resources/FOSUserBundle/views/layout.html.twig'. И этот 'layout.html.twig' может, например, наследовать из' base.html.twig' рамки 'bootstrap' css. Или что-нибудь еще, что вам может понадобиться. Дело в том, что все шаблоны (например, 'Security/login.html.twig' или' Registration/register.html.twig') наследуются от этого 'layout.html.twig'. Просто поиграйте с шаблонами, которые вы скопировали, и вы поймете, как все работает. –

+0

Хорошо. Я думал, что можно переопределить их шаблонами непосредственно из пакета, который наследует от FOSUserBundle методом getParent(). Тогда я буду работать с папкой app/Resources. Благодарю. – Kishlin

 Смежные вопросы

  • Нет связанных вопросов^_^