Voici un exemple d'un tel tableau PHP:
["Foo" => 100, "Bar" => 50]
Génial. Voici ma tentative de les transmettre au composant graphique:
<Chart points="{!! json_encode($points) !!}"></Chart>
Cela a l'air bien, mais les chaînes (Foo et Bar) dans le tableau $points
sont encapsulées avec "(guillemets doubles) lors de l'utilisation de json_encode()
. Cela signifie que chaque fois que la 1ère chaîne apparaît dans le tableau, le navigateur pense que le" est censé fermer l'attribut points
.
Voici ce que vous obtenez de voir dans le navigateur:
<Chart points="{">Foo":100,"Bar":50}"</Chart>
Comment puis-je m'y prendre? Cela fait des heures que je me bats avec cela et je ne peux pas comprendre.
<Chart points='{!! json_encode($points) !!}'></Chart>
Utilisez simplement des citations singulières.
Bien que j'ai lu les réponses précédentes, cela m'a pris un certain temps pour travailler. Alors, voici ce qui fonctionne pour moi avec Laravel 5.5 et VueJs 2.5:
Convertissez votre tableau PHP en une chaîne sérialisée JSON.
Pour les tableaux PHP, voir json_encode .
Pour les collections Eloquent, voir la méthode Eloquent toJson .
Pour référence ultérieure, nous appelons cette nouvelle chaîne JSON $arrayAsJSON
.
Dans votre vue (ou modèle de lame):
<some-vue-component :componentProperty="{{ $arrayAsJSON }}"></some-vue-component>
Le composant Vue:
<template></template>
<script>
export default {
props: ['componentProperty'],
mounted() {
console.log('some-vue-component mounted.');
console.log(this.componentProperty)
},
}
</script>
Peut utiliser de manière formelle:
<Chart points='<?php echo json_encode($points); ?>'></Chart>
À partir de Laravel 5.5, vous pouvez utiliser la directive @json.
<Chart points=@json($points)></Chart>