71 lines
1.9 KiB
ReStructuredText
71 lines
1.9 KiB
ReStructuredText
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
|
|
<http://api.symfony.com/master/Symfony/Component/HttpKernel/Fragment/FragmentHandler.html>`_.
|
|
|
|
* **fragment.renderers**: An array of fragment renderers (by default, the
|
|
inline, ESI, and HInclude renderers are pre-configured).
|
|
|
|
Registering
|
|
-----------
|
|
|
|
.. code-block:: php
|
|
|
|
$app->register(new Silex\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:
|
|
|
|
.. code-block:: jinja
|
|
|
|
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 Silex 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):
|
|
|
|
.. code-block:: jinja
|
|
|
|
{{ render(url('route_name')) }}
|
|
|
|
{{ render_esi(url('route_name')) }}
|
|
|
|
{{ render_hinclude(url('route_name')) }}
|