Symfony 4 - PHP преобразование многомерного массива в javascript - PullRequest
1 голос
/ 06 февраля 2020

Здравствуйте, у меня есть этот массив в Symfony на моем контроллере:

    $array = [
        "label" => [
            "january",
            "february"
        ],
        "data" => [
            0,
            1
        ]
    ];

I wish I could convert it for use in Javascript.

Цель состоит в том, чтобы я мог получить в JS:

["январь", " февраль "] и [0,1]

, чтобы использовать их в качестве переменных массива

Я пытался json_encode($array), это работает, но я не могу получить доступ к своему массиву, используя {{array["label"}} в Twig в блоке Javascript

Может кто-нибудь помочь мне, пожалуйста?

РЕДАКТИРОВАТЬ: Ладно, ребята, это работает сейчас, я сделал это:

Контроллер:

    return $this->render('products/index.html.twig', [
        "report" => json_encode($report),
    ]);

index. html .twig (javascript blo c)

const data = {{report | raw}};

Спасибо всем!

Ответы [ 3 ]

1 голос
/ 06 февраля 2020

Вам не нужно вызывать JSON .parse, поскольку вывод json_decode является литералом javascript. Просто присвойте его переменной.

var yourArray = <?php echo json_encode($array); ?>;

Вы можете получить доступ к свойству следующим образом

alert(yourArray[0].Key);
0 голосов
/ 06 февраля 2020

Вы можете попробовать использовать:

PHP:

$array = [
    "label" => [
        "january",
        "february"
    ],
    "data" => [
        0,
        1
    ]
];
$response = new Response(json_encode($array));
$response->headers->set('Content-Type', 'application/json');
return $response;

JavaScript:

var data = JSON.parse(response);
console.log(data.label)

Надеюсь, вам помочь.

0 голосов
/ 06 февраля 2020

Получается строка Json, а не объект, сначала нужно проанализировать ее в Javascript.

const data=JSON.parse(array);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...