Симфонический проект; SonataUser, FOSUser и их Registration_content.html.twig

Решено – см. конец записи

Я пытаюсь ознакомиться с SonataUserBundle, расширяющим FOSUserBundle.

Установка работала нормально (насколько я могу судить), и теперь я хочу настроить формы входа и регистрации. Я перезаписал шаблоны в app/Resources, и все заработало. Однако для регистрационной формы я не понимаю, почему она работает...

Вот моя проблема:

Контроллер регистрации SonataUserBundle (RegistrationFOSUser1) настраивает форму и отображает ее с FOSUserBundle:Registration:register.html.twig в качестве шаблона:

$form = $this->container->get('sonata.user.registration.form');
$formHandler = $this->container->get('sonata.user.registration.form.handler');
[...]
return $this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html.'.$this->getEngine(), array(
        'form' => $form->createView(),
    )); 

register.html.twig включает FOSUserBundle:Registration:register_content.html.twig:

{% block fos_user_content %}
{% include "FOSUserBundle:Registration:register_content.html.twig" %}
{% endblock fos_user_content %}

register_content.html.twig содержит код ветки для отображения формы.

Однако на самом деле отображается SonataUserBundle:Registration:register_content.html.twig.

Никак не могу понять, где, когда и как SonataUserBundle подменяет здесь FOSUserBundle...

Спасибо за любые подсказки!


Хорошо, теперь я вижу, что решение моего вопроса хорошо задокументировано в поваренной книге Symfony: http://symfony.com/doc/current/cookbook/bundles/inheritance.html

Для таких же новичков в symfony, как я:

Если вы определяете родительский 'ParentBundle' для другого пакета 'ChildBundle', то каждый раз, когда вызывается функция, шаблон и т. д. из ParentBundle, symfony сначала будет искать файл с таким же именем в ChildBundle.

Родительский пакет определен в ChildBundle.php:

public function getParent()
{
    return 'ParentBundle';
}

Это работает, пока файл родительского пакета вызывается с помощью обычной нотации ParentBundle:path:file.


person taupunkt    schedule 31.03.2014    source источник
comment
Пожалуйста, опубликуйте результат как ответ и примите его!   -  person Etienne Noël    schedule 10.04.2014
comment
Спасибо, что указали правильный способ сделать это.   -  person taupunkt    schedule 10.04.2014


Ответы (1)


Хорошо, теперь я вижу, что решение моего вопроса хорошо задокументировано в поваренной книге Symfony: http://symfony.com/doc/current/cookbook/bundles/inheritance.html

Для таких же новичков в symfony, как я:

Если вы определяете родительский 'ParentBundle' для другого пакета 'ChildBundle', то каждый раз, когда вызывается функция, шаблон и т. д. из ParentBundle, symfony сначала будет искать файл с таким же именем в ChildBundle.

Родительский пакет определен в ChildBundle.php:

public function getParent()
{
return 'ParentBundle';
}

Это работает, пока файл родительского пакета вызывается с помощью обычной нотации ParentBundle:path:file.

person taupunkt    schedule 10.04.2014