Как отправить данные PHP в файл Javascript в Laravel (Google maps API) - PullRequest
0 голосов
/ 27 августа 2018

У меня проблемы со скоростью страницы в Laravel из-за JavaScript в моем просмотре страницы.

Я пытаюсь улучшить скорость страниц, не добавляя javascript в просмотр страницы, а вместо этого в отдельный файл search.js.

Я создаю карту с помощью карт Google и размещаю на карте около 100 маркеров. Данные в зависимости от того, где следует размещать маркеры, хранятся в базе данных MySQL (как часть информации о пользователях).

Сейчас у меня есть скрипт на странице в цикле foreach на странице для каждого пользователя, переданного в представление. Это делает исходный код страницы очень длинным, так как он проходит через цикл 100 раз и отображает весь этот javascript в исходном коде.

Ниже приведен только пример моего кода, чтобы получить суть того, что я имею в виду, весь код отображается здесь .

<script>
@foreach($usersall as $user)
...

var latlng{{ $user->id }} = {lat: {{ $user->lat }} , lng: {{ $user->long }} };

var marker{{ $user->id }} = new google.maps.Marker({
  map: map,
  clickable : true,
  icon: '/assets/img/pin_marker_open.png',
  position: latlng{{ $user->id }}
});

markers.push(marker{{ $user->id }});

...
@endforeach
</script>

Я не могу сделать это в моем файле search.js, потому что у меня нет данных из $usersall.

Итак, вот мой вопрос: Как передать переменные PHP для пользователя в файл search.js, чтобы я мог отображать все маркеры на карте, не имея ни одного из JavaScript в самой странице просмотра?

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Если вы хотите получить значения переменных php внутри вашего search.js, насколько я знаю, вы не можете.

Я рекомендую использовать ajax для этой цели, если это не вариант, вы можете сделать цикл ваших пользователей в html, чтобы скрыть такие поля, как

@foreach($usersall as $user)
    <input type="hidden" class="user" value="{{$user}}">
    //if fails try encoding json_encode($user) or json_decode($user) i don't rememer
@endforeach

И затем зацикливая в своем файле js, вы можете получить все элементы с классом user и зациклить их, чтобы получить значение

0 голосов
/ 27 августа 2018

Это не лучший способ сделать это, но он самый прямой:

<script>
    var users = {{ $usersall }};
</script>

Вывод коллекции по умолчанию (при отражении) будет приведен к строке JSON. Поэтому вы можете напрямую присвоить это переменной в JS.

Однако в идеале вы должны получить это значение через AJAX и передать его в функцию отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...