在奏鸣曲管理列表视图中呈现表单
Render forms in sonata admin listview
我的应用程序有一个代表新闻项目的列表视图。在每一行的末尾,我想添加一个加号按钮,通过单击它,一个小的内联表单应该会在气泡中弹出(通过 bootstrap 下拉菜单)。要呈现此表单,我的实际方法是通过字段模板中的 render(controller(...))
机制呈现此表单。
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field %}
{{ render(controller(...)) }}
{% endblock %}
呈现控制器调用根据官方 symfony 文档呈现表单 ...
呈现的表单将其数据发送回同一控制器中的 commentAction。
理论上它工作得很好,但实际上它很慢。我的网站在 60 秒后超时运行只是因为在列表视图中默认显示 64 个项目并且每个项目都调用此渲染控制器函数 ...
有没有一种不通过调用昂贵的渲染控制器调用来渲染一点额外形式的干净方法?
我认为它可以在控制器中操作 listAction 方法(在这里注入额外的形式?)...但这似乎不是一个干净的解决方案。
有什么想法吗?
谢谢
编辑:
好的,我想我发现了,瓶颈在哪里……上面的例子被简化了。实际上,我将每一行的集合加载到表单中......以您可以选择的形式,哪个作者创建了新闻。该列表中至少有 500 位作者……所以显示这些作者的单个新的,一切都很好。但是渲染选择选项 64 次太多了。有没有办法让它更快?一些缓存机制?
我认为在这种情况下,不是一次呈现所有表单,而是在用户单击按钮后通过 AJAX 加载表单。另一种解决方案可能是替换某些自动完成的集合,这样您就不需要一次呈现所有数据。
我的应用程序有一个代表新闻项目的列表视图。在每一行的末尾,我想添加一个加号按钮,通过单击它,一个小的内联表单应该会在气泡中弹出(通过 bootstrap 下拉菜单)。要呈现此表单,我的实际方法是通过字段模板中的 render(controller(...))
机制呈现此表单。
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field %}
{{ render(controller(...)) }}
{% endblock %}
呈现控制器调用根据官方 symfony 文档呈现表单 ...
呈现的表单将其数据发送回同一控制器中的 commentAction。
理论上它工作得很好,但实际上它很慢。我的网站在 60 秒后超时运行只是因为在列表视图中默认显示 64 个项目并且每个项目都调用此渲染控制器函数 ...
有没有一种不通过调用昂贵的渲染控制器调用来渲染一点额外形式的干净方法?
我认为它可以在控制器中操作 listAction 方法(在这里注入额外的形式?)...但这似乎不是一个干净的解决方案。
有什么想法吗?
谢谢
编辑:
好的,我想我发现了,瓶颈在哪里……上面的例子被简化了。实际上,我将每一行的集合加载到表单中......以您可以选择的形式,哪个作者创建了新闻。该列表中至少有 500 位作者……所以显示这些作者的单个新的,一切都很好。但是渲染选择选项 64 次太多了。有没有办法让它更快?一些缓存机制?
我认为在这种情况下,不是一次呈现所有表单,而是在用户单击按钮后通过 AJAX 加载表单。另一种解决方案可能是替换某些自动完成的集合,这样您就不需要一次呈现所有数据。