Визуализация форм в сонате - PullRequest
0 голосов
/ 25 мая 2018

В моем приложении есть список, представляющий новости.На каждом конце строки я хочу добавить кнопку со знаком плюс и, щелкнув по ней, в пузырьке должна появиться небольшая встроенная форма (через выпадающий список).На самом деле, для рендеринга этой формы мой подход заключается в рендеринге этого через механизм render(controller(...)) в шаблоне поля.

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

{% block field %}
  {{ render(controller(...)) }}
{% endblock %}

Вызов контроллера рендеринга визуализирует форму в соответствии с официальной документацией Symfony ...

Визуализированная форма отправляет свои данные обратно на commentAction в том же контроллере.

Теоретически это работает нормально, но практически медленно, как ад.Мой сайт запускается через 60 секунд только потому, что в списке показаны 64 элемента по умолчанию, и каждый элемент вызывает эту функцию контроллера рендеринга ...

Есть ли чистый способ визуализации небольшой дополнительной формы, не вызываядорогой вызов контроллера рендеринга?

Я думаю, что это может работать с манипулированием методом listAction в контроллере (добавление здесь дополнительной формы?) ... но это не кажется чистым решением.

Есть идеи?

Спасибо

Редактировать:

Хорошо, я думаю, я выяснил, где узкое место ... пример выше был упрощен.На самом деле я загружаю коллекцию в форму для каждой строки ... в форме, которую вы можете выбрать, какой автор создал новость.В этом списке не менее 500 авторов ... так что, отображая этих авторов для одного нового, все в порядке.Но рендеринг опций выбора 64 раза - это слишком много.Есть ли способ сделать это быстрее?Какой-то механизм кеширования?

1 Ответ

0 голосов
/ 27 мая 2018

Я думаю, что в этом случае вместо рендеринга всех форм сразу, просто загрузите форму через AJAX, как только пользователь нажмет на кнопку.Другое решение может состоять в том, чтобы заменить сбор для некоторого автозаполнения, так что вам не нужно отображать все данные сразу.

...