1
votes

Symfony 4 - PHP convertit un tableau multidimensionnel en javascript

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!


1 commentaires

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.


3 Réponses :


0
votes

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);


4 commentaires

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 = ;


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



1
votes

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); ?>;


2 commentaires

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



0
votes

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.


2 commentaires

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)?