symfony - 在奏鸣曲管理列表视图中呈现表单
问题描述
在我的应用程序中,我有一个代表新闻项目的列表视图。在每一行末尾我想添加一个加号按钮,通过单击它,一个小的内联表单应该在气泡中弹出(通过引导下拉菜单)。为了呈现这个表单,我的实际方法是通过render(controller(...))
字段模板中的机制来呈现它。
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field %}
{{ render(controller(...)) }}
{% endblock %}
渲染控制器调用根据官方 symfony 文档渲染表单...
呈现的表单将其数据发送回同一控制器中的 commentAction。
理论上它工作得很好,但实际上它的速度很慢。我的网站在 60 秒后超时运行,只是因为在列表视图中默认显示 64 个项目,并且每个项目都调用此渲染控制器函数...
有没有一种干净的方法来渲染一些额外的表单,而不是通过调用昂贵的渲染控制器调用?
我认为它可以与操纵控制器中的 listAction 方法一起工作(在这里注入额外的形式?)......但这似乎不是一个干净的解决方案。
有任何想法吗?
谢谢
编辑:
好的,我想我发现了瓶颈在哪里......上面的例子被简化了。实际上,我将每一行的集合加载到表单中......以您可以选择的形式,哪个作者创建了新闻。该列表中至少有 500 位作者……因此,将这些作者显示为一个新的,一切都很好。但是渲染选择选项 64 次太多了。有没有办法让它更快?一些缓存机制?
解决方案
我认为在这种情况下,不是一次呈现所有表单,而是在用户单击按钮后通过 AJAX 加载表单。另一种解决方案可能是替换一些自动完成的集合,这样您就不需要一次呈现所有数据。
推荐阅读
- typescript - 为什么数组的长度属性计算打字稿中的字符数?
- python - 如何在 Django 2 中搜索数据后导出 csv 文件?
- aws-lambda - 适用于 node.js 的 AWS Alexa 技能工具包 SDK:部署时出错
- c - 如何在C中按索引连接两个字符串数组索引?
- r - glm 模型对训练后添加的未知因子水平有什么作用?
- unity3d - 如何在 Unity 中将键盘控件转换为触摸屏
- angular - 如何一次只突出显示单个 mat-list 元素
- mongodb - MongoDB PHP聚合 - 输出数组中的数据集不正确
- jquery - 选择多个下拉菜单时如何启动功能
- spring-boot - 如何使用 oauth2 范围测试 Spring PreAuthorize