繁体   English   中英

SonataAdminBundle扩展模板

[英]SonataAdminBundle Extending templates

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

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

            case 'list':

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

            break;

            return parent::getTemplate($name);

        break;
    }
}

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

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

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

但这给了我以下错误:

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

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

您的开关/盒不正确。

它应该是:

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

            default:
                return parent::getTemplate($name);
                break;
        }
    }

我不确定您是否在做“错误”的事情(除了奇怪的情况下语法没有按照您认为的那样做,请参见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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM