0

我已经设置了我的 Admin 类来呈现自定义模板:

public function getTemplate($name)
{
    switch ($name)
    {
        default:

            case 'list':

                return 'MyBundle:Admin:list.html.twig';

            break;

            return parent::getTemplate($name);

        break;
    }
}

这工作正常。我可以在我的模板文件中输入一些 html 并呈现正常。但是,我想从管理包中扩展现有模板,因为我只想对此实体进行一些小的更改。

我已将以下内容添加到我的模板文件中:

{% extends 'SonataAdminBundle:CRUD:base_list.html.twig' %}

但这给了我以下错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 77 bytes)

谁能告诉我我做错了什么?

4

2 回答 2

3

您的开关/外壳不正确。

它应该是:

    public function getTemplate($name)
    {
        switch ($name) {
            case 'list':
                return 'MyBundle:Admin:list.html.twig';
                break;

            default:
                return parent::getTemplate($name);
                break;
        }
    }
于 2012-10-21T09:31:51.213 回答
0

我不确定您是否在做任何“错误”(除了奇怪的大小写语法不符合我认为您认为的那样,请参阅http://php.net/manual/en/control-structures.switch .php并向下滚动到描述“break”语句重要性的部分)。

在扩展模板时,似乎可以将 symfony 置于无限循环中。我已经用几个模板看到了这个。我还没有弄清楚究竟是什么触发了它,但我认为它与使用 EasyExtends 的包继承有关。在我的应用程序中,我有一个子 sonata-admin 包:

class ApplicationSonataAdminBundle extends Bundle
{
    /**
     * {@inheritdoc}
     */
    public function getParent()
    {
        return 'SonataAdminBundle';
    }
}

然后我只用内容覆盖了standard_layout.html.twig:

{% extends "SonataAdminBundle::standard_layout.html.twig" %}

这导致“SonataAdminBundle::standard_layout.html.twig”被无限次加载,因为模板似乎在有效地扩展自身。

假设您的设置与我的类似。我怀疑尝试做你想做的事情的唯一方法是使用不同的模板名称(例如“my_standard_layout.html.twig”),然后将该模板设置为应用程序范围的默认值,如下所述:https:/ /sonata-project.org/bundles/admin/master/doc/reference/templates.html#configuring-templates

于 2015-04-15T03:18:52.863 回答