In Symfony applications there are several methods of passing data from the backend to the frontend. Some applications make Ajax requests whenever they need data and others prefer to pass it in Twig templates as HTML attributes or JavaScript variable values.
In Symfony 5.3 we've added a simpler way of doing this: the new serialize Twig filter. This filter accepts any data that can be serialized by the Serializer component and returns a serialized string in the specified format.
In the following example, the Twig template uses the stimulus_controller()
function from the Symfony Stimulus Bridge. If the template is passed a
variable called product
, you can now serialize its contents to use it in the
Stimulus function call:
1 2 3
{{ stimulus_controller('product-show', {
product: product|serialize('json', { groups: 'product:read'})
}) }}
This would render something like this:
1 2 3
<div data-controller="product-show"
data-product-show-product-value="{"id":5,...}">
<div>
This is great! Thank you
", ", " ... that is very ineffective. If you replace html attribute quotes with apostrophes, then there is no need for escaping the quotes:
... < div data-something='{"foo":"bar"}' ... >
(why it removes tags instead of escaping them?)
That's nice! Thanks