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

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 に答える