В настоящее время я работаю над мини-веб-проектом, это своего рода игра для побега, и я использую фреймворк Symfony, и этот фреймворк для меня новичок, поэтому в основном я учусь использовать этот проект, который меня заблокировал небольшая проблема, я не могу понять, как передать данные во внешний код JS, Я использую return $this->render("app/player_interface.html.twig",['player'=>$player]); в контроллере Symfony для отправки объекта игрока в ветку, а затем в ветку я вставил этот блок

      {% set player_data = {
                pseudo: player.Username,
                longitude: player.longitude,
                latitude: player.latitude,

            } %}

    <div data-player='{{ player|json_encode|raw }}'>
    </div>

А затем в файле javascript используйте это:

const player_data =document.querySelectorAll('[data-player]');
const playerObject =Array.from(player_data).map(item => JSON.parse(item.dataset.player));
console.log(playerObject);

Но журнал консоли показывает мне пустой массив, и даже если я распечатаю переменную player_data, которая должна быть файлом JSON, консоль покажет мне пустой узел, я просмотрел многие веб-сайты и документацию Symfony, но не могу найти ничего хороший подробный пример.

Я надеюсь, что вы могли бы мне помочь и заранее спасибо.

0
maghraoui dhia 11 Дек 2020 в 16:04

1 ответ

Лучший ответ

Ваша ошибка в том, что вы кодируете player, а вам нужно кодировать player_data. Попробуйте изменить свой код на:

<div data-player='{{ player_data | json_encode | raw }}'>
</div>
2
Urmat Zhenaliev 11 Дек 2020 в 13:14