Генерация URL с параметрами из переменных JS в TWIG

1

У меня довольно глупый вопрос. Я пытаюсь создать url в twig используя переменные JS.


Он работает, когда я пишу их вручную:

var url = "{{ path('geolocation', {'latitude':'41.39109','longitude':'2.15485','accuracy':'1114'}) }}";

но это не происходит, когда я использую переменные:

var url = "{{ path('geolocation', {'latitude':latitude,'longitude':longitude,'accuracy':accuracy}) }}";

Что может случиться? Конечно, переменные существуют и правильно определены.


Кажется, что он не получает параметр правильно:

Во время рендеринга шаблона было выбрано исключение ("Точность параметра" для геолокации маршрута "должна соответствовать" [^/] ++ "(" "данный") для создания соответствующего URL-адреса. ").

Но когда я иду:

console.log(latitude + " " + longitude + " " + accuracy);

результат

41.39109 2.15485 1114

Теги:
twig

2 ответа

3

Я предлагаю вам использовать FOSJsRoutingBundle:

var url = Routing.generate('geolocation', { latitude: latitude, longitude: longitude, accuracy:accuracy })

NB: Позаботьтесь о том, чтобы добавить правильное включение js файла и выставить маршрут контроллера, как описано в документе.

0

Я не знаком с TWIG, но в обычной JS вашему URL присваивается строка, а Javascript не может/не заменяет имена переменных в обычных строках. Вам нужно будет сделать что-то вроде:

  var url = "{{ path('geolocation', {'latitude':" + latitude + ",'longitude':" + longitude + ",'accuracy':" + accuracy + "}) }}";

ES6, если вы можете использовать его, имеет другой способ: обратные тики:

  var url = '{{ path('geolocation', {'latitude':${latitude},'longitude':${longitude},'accuracy':${accuracy}"}) }}';

Который маркирует выражения, подлежащие оценке, путем их включения в $ {...}

  • 0
    path - это функция ветки, которая уже будет обработана перед отправкой вывода клиенту. Вот почему этот подход не будет работать, так как переменные javascript определены на стороне клиента и неизвестны при отображении шаблона.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню