Как встроить асинхронное содержание с помощью hinclude.js

Как встроить асинхронное содержание с помощью hinclude.js

Контроллеры могут быть встроены асинхронно, используя библиотеку Java-скрипта hinclude.js_. Так как встроенное содержание поступает с другой страницы (или, если на то пошло, контроллера), Symfony использует версию стандартной функции render(), чтобы сконфигурировать теги hinclude:

  • Twig
  • PHP
1
2
{{ render_hinclude(controller('...')) }}
{{ render_hinclude(url('...')) }}

Note

hinclude.js_ должен быть включён в вашу страницу, чтобы он работад.

Note

При использовании контроллера вместо URL, вы должны активировать конфигурацию Symfony fragments:

  • YAML
  • XML
  • PHP
1
2
3
4
# app/config/config.yml
framework:
    # ...
    fragments: { path: /_fragment }

Содержание по умолчанию (во время загрузки или если Java-скрипт отключен) может быть установлено глобально в конфигурации вашего приложения:

  • YAML
  • XML
  • PHP
1
2
3
4
5
# app/config/config.yml
framework:
    # ...
    templating:
        hinclude_default_template: hinclude.html.twig

Вы можете определять шаблоны по умолчанию для каждой функции render() (что переопределит любой определённый глобальный шаблон по умолчанию):

  • Twig
  • PHP
1
2
3
{{ render_hinclude(controller('...'),  {
    'default': 'default/content.html.twig'
}) }}

Или вы также можете указать строку для отображения в качестве содержания по умолчанию:

  • Twig
  • PHP
1
{{ render_hinclude(controller('...'), {'default': 'Loading...'}) }}