使用“getParent()”覆盖模板似乎不起作用

时间:2012-06-03 19:57:04

标签: symfony twig fosuserbundle

我是Symfony2的新手,我正在关注Symfony FOSUserBundle(FTW!)的YouTube教程教程。

大约在7.40左右,它说要添加一个名为getParent()的方法,在我的情况下

<?php
//src\Monse\UserBundle\UserBundle.php

namespace Monse\UserBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class UserBundle extends Bundle{

    public function getParent(){

        return 'FOSUserBundle';
    }
}

我的layout.html.twig看起来像这样

{# src\Monse\UserBundle\Resources\views\layout.html.twig #}
{% extends '::base.html.twig' %}
{% block body %}
{{block('fos_user_content')}}
{% endblock %}
可悲的是,它不起作用,我不知道我做错了什么。 谢谢你的帮助

2 个答案:

答案 0 :(得分:4)

您是否在内核中启用了捆绑包?

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new FOS\UserBundle\FOSUserBundle(),
        new Monse\UserBundle\UserBundle(),
    );
}

编辑:您可以重命名您的捆绑MonseUserBundle,以便能够将父FOSUserBundle与覆盖它的捆绑包区分开来:

<?php
//src\Monse\UserBundle\MonseUserBundle.php

namespace Monse\UserBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class MonseUserBundle extends Bundle{

    public function getParent(){

        return 'FOSUserBundle';
        }
    }

现在用这个:

<?php
    // app/AppKernel.php

    public function registerBundles()
    {
        $bundles = array(
            // ...
            new FOS\UserBundle\FOSUserBundle(),
            new Monse\UserBundle\MonseUserBundle(),
        );
    }

答案 1 :(得分:0)

实际上这解决了它(来自原始文档):

{# src\Monse\UserBundle\Resources\views\layout.html.twig #}
{% extends '::base.html.twig' %}
{% block body %}
{% block fos_user_content %}{% endblock %}
{% endblock %}