HTTP Fragment

The HttpFragmentServiceProvider provides support for the Symfony fragment sub-framework, which allows you to embed fragments of HTML in a template.

Parameters

  • fragment.path: The path to use for the URL generated for ESI and HInclude URLs (/_fragment by default).
  • uri_signer.secret: The secret to use for the URI signer service (used for the HInclude renderer).
  • fragment.renderers.hinclude.global_template: The content or Twig template to use for the default content when using the HInclude renderer.

Services

  • fragment.handler: An instance of FragmentHandler.
  • fragment.renderers: An array of fragment renderers (by default, the inline, ESI, and HInclude renderers are pre-configured).

Registering

$app->register(new Mascot\Provider\HttpFragmentServiceProvider());

Usage

Note

This section assumes that you are using Twig for your templates.

Instead of building a page out of a single request/controller/template, the fragment framework allows you to build a page from several controllers/sub-requests/sub-templates by using fragments.

Including “sub-pages” in the main page can be done with the Twig render() function:

The main page content.

{{ render('/foo') }}

The main page content resumes here.

The render() call is replaced by the content of the /foo URL (internally, a sub-request is handled by Mascot to render the sub-page).

Instead of making internal sub-requests, you can also use the ESI (the sub-request is handled by a reverse proxy) or the HInclude strategies (the sub-request is handled by a web browser):

{{ render(url('route_name')) }}

{{ render_esi(url('route_name')) }}

{{ render_hinclude(url('route_name')) }}