Как встроить асинхронное содержание с помощью hinclude.js
Как встроить асинхронное содержание с помощью hinclude.js
Контроллеры могут быть встроены асинхронно, используя библиотеку Java-скрипта hinclude.js_.
Так как встроенное содержание поступает с другой страницы (или, если на то пошло, контроллера),
Symfony использует версию стандартной функции render()
, чтобы сконфигурировать теги hinclude
:
1 2
{{ render_hinclude(controller('...')) }}
{{ render_hinclude(url('...')) }}
Note
hinclude.js_ должен быть включён в вашу страницу, чтобы он работад.
Note
При использовании контроллера вместо URL, вы должны активировать конфигурацию
Symfony fragments
:
1 2 3 4
# app/config/config.yml
framework:
# ...
fragments: { path: /_fragment }
Содержание по умолчанию (во время загрузки или если Java-скрипт отключен) может быть установлено глобально в конфигурации вашего приложения:
1 2 3 4 5
# app/config/config.yml
framework:
# ...
templating:
hinclude_default_template: hinclude.html.twig
Вы можете определять шаблоны по умолчанию для каждой функции render()
(что переопределит любой определённый глобальный шаблон по умолчанию):
1 2 3
{{ render_hinclude(controller('...'), {
'default': 'default/content.html.twig'
}) }}
Или вы также можете указать строку для отображения в качестве содержания по умолчанию:
1
{{ render_hinclude(controller('...'), {'default': 'Loading...'}) }}