我会尽可能清楚地解释这一点。我正在开发一个相当大的项目,并创建了一个CrudController。此控制器具有一些默认操作(indexAction
,createAction
,archiveAction
...)。我也创建了一些相应的观点。
edit.html.twig
视图将使用form_widget()函数list.html.twig
视图获取数据数组和(可配置)列数组。这将绘制一个简单的表格,其中包含所需的列 AND 一些操作按钮(默认情况下为编辑和存档按钮)。 我的想法是我现在能够快速开发我的应用程序:我创建了一个新的Entity,Repository,FormType,最后是一个扩展CrudController而不是BaseController的Controller。在我的EntityController中,我确保我的CrudController的配置是正确的(实体名称,指向FormType的指针......)。这一切都像一个魅力。
但是,我已经到了我需要一些实体(项目)需要一些额外操作(在编辑和存档旁边),即“渲染”或“下载”(渲染完成时)。
因为我不想完全覆盖这个实体的列表视图只是为了添加额外的操作,因为我将再次遇到这个场景,我决定尝试将动作的渲染移出列表视图:我创建了一个只显示操作的actions.html.twig
视图和一个基于给定项目状态添加其他操作的actionsAction
(如果它显示渲染按钮或下载按钮?)。 / p>
在我使用的list.html.twig
中:
{% for row in data %}
{{ render(controller(entityControllerActionsAction, {'id': row.id})) }}
...
{% endfor %}
然而,事实证明渲染完全是内存耗尽,只要我在列表中显示一些实体,就会导致“内存耗尽”错误。之前仅使用12MB的页面突然使用超过128MB(内存限制),这是完全不可接受的。加载时间也大量增加
我正在寻找一个体面的,面向对象的,DRY解决这个问题的方法。
我不是在寻找预建代码或其他任何东西,而是寻找继续进行的建议。感谢您的时间。