Bonjour j'ai ce tableau dans Symfony sur mon contrôleur:
const data = {{report | raw}};
Le but est que je puisse entrer dans JS:
["january", "fevrier "] et [0,1]
pour les utiliser comme variables de tableau
J'ai essayé json_encode ($ array)
, cela fonctionne mais je ne peux pas accéder à mon array utilisant {{array ["label"}}
dans Twig dans le bloc Javascript
Quelqu'un peut-il m'aider s'il vous plaît?
EDIT: Ok les gars, ça fonctionne maintenant, j'ai fait ceci:
Contrôleur:
return $this->render('products/index.html.twig', [ "report" => json_encode($report), ]);
index.html.twig (bloc javascript)
$array = [ "label" => [ "january", "february" ], "data" => [ 0, 1 ] ]; I wish I could convert it for use in Javascript.
Merci à tous!
3 Réponses :
Ce que vous obtenez est une chaîne Json, pas un objet, vous devez d'abord l'analyser en Javascript.
const data=JSON.parse(array);
Incorrect, si cela était extrait dans une chaîne JS, alors oui, ce serait le cas, mais comme nous utilisons PHP, nous pouvons littéralement attribuer le résultat json_encode en le faisant écho dans le script comme: let arr = = json_encode ($ array); ?>;
Non cela ne fonctionne pas, j'ai cette erreur dans la console: `` Uncaught SyntaxError: Uncaught token '&' ''
@JoshWood, il est dans sa vue brindille, pas dans un simple modèle HTML / PHP. Ce que vous suggérez ne fonctionnera pas
@Preciel Mes excuses alors
Vous n'avez pas besoin d'appeler JSON.parse car la sortie de json_decode est un littéral javascript. Attribuez-le simplement à une variable.
alert(yourArray[0].Key);
Vous pouvez accéder à une propriété comme celle-ci
var yourArray = <?php echo json_encode($array); ?>;
Non ça ne marche pas, j'ai cette erreur: Impossible d'accéder à une clé ("0") sur une variable string ("{" label ": [" January "," February "]," data " : ["0", "1"]} ").
Essayez comme ceci yourArray [0] [1]
ou Essayez comme ceci alerte (yourArray [0] .1);
Découvrez ici comment accéder aux données du tableau jsfiddle.net/9f5zn2s6
Vous pouvez essayer d'utiliser:
PHP:
var data = JSON.parse(response); console.log(data.label)
JavaScript:
$array = [ "label" => [ "january", "february" ], "data" => [ 0, 1 ] ]; $response = new Response(json_encode($array)); $response->headers->set('Content-Type', 'application/json'); return $response;
J'espère vous aider.
Argh, non ça ne marche pas. J'utilise Symfony, donc je dois accéder à ma variable en utilisant var data = JSON.parse ({{response}})
Mais cela ne fonctionne pas
@eronn pourriez-vous s'il vous plaît fournir ici dd (données)?
Veuillez ajouter à votre question la partie de votre contrôleur qui renvoie la réponse et votre brindille, où vous essayez de lire vos données.