- Building a Laravel app with a few Vue components
- Want to pass a PHP array onto a Vue component using props
Here’s an example of such PHP array:
["Foo" => 100, "Bar" => 50]
Great. Here’s my attempt at passing them onto the Chart component:
<Chart points="{!! json_encode($points) !!}"></Chart>
This looks fine, but the strings (Foo and Bar) inside the $points
array get encapsulated with ” (double quotes) when using json_encode()
. This means that whenever the 1st string appears in the array, the browser thinks that the ” is meant to close the points attribute.
Here’s what you get to see in the browser:
<Chart points="{">Foo":100,"Bar":50}"</Chart>
How do I go about this? I have been struggling with this for hours now, and I can’t wrap my head around it.
Can’t use ” (double quotes) since the browser interprets it as the closing quote for an attribute and messes up the HTML
Can’t use ‘ (single quotes) since that’s invalid JSON (and json_encode doesn’t support it)
Solution
<Chart points='{!! json_encode($points) !!}'></Chart>
Just use singular quotes.
Top comments (1)
Why not calling API HTTP from Vue to Laravel and avoid this?