How to use the RequestAnalyzer with ESI requests?¶
The symfony documentation already describes how to use edge side includes
to cache parts of pages with different life times. However, if you are using
the render_esi function in combination with the controller function as
shown in the following code, you might encounter issues:
{{ render_esi(controller('AppBundle:News:latest', { 'maxPerPage': 5 })) }}
This will probably work for most controllers, but if the latestAction of
the NewsController makes use of the RequestAnalyzer it might fail,
because the RequestAnalyzer can’t analyze the request. This is caused by
the fact that Symfony generates a special URL for this render_esi call.
The solution to this problem is to also pass the portal and the locale (if the rendered content should not have the same locale as the rest of the page) to the options:
{{ render_esi(controller('AppBundle:News:latest', { 'maxPerPage': 5, _portal: request.portalKey, _locale: request.locale })) }}