2013-06-21 1 views
0

Я пытаюсь использовать генератор ссылок с функцией Javascript.Как использовать генератор ссылок из переменной javascript, в symfony2

{% for key in values %} 
<a href="#" onClick="bookConfirm('{{key}}'); return false;">click!!</a> 
{%endfor %} 

function bookConfirm(key) { 
    if (confirm("Is it OK?")) { 
    alert("OK!!"); 

    location.href = "{{ path('acme_member_bookLesson',{'scheKey':key})}}"; 
    } else { 
    alert("cancel!"); 
    } 
} 

но он показывает

'Variable "ключ" не существует в AcmeMemberBundle: По умолчанию: show.html.twig в строке 19'

Как я могу решить эту проблему? это немного сложно использовать Javascript и генератор ссылок.

+0

Что * "ключ" * см? Вы забыли передать его в качестве параметра в своем контроллере? Или вы делаете цикл 'for'? – Touki

ответ

2

EDIT: второй key не находится в цикле, это означает, что он всегда будет иметь значение последнего цикла. Вы выводите значение key в качестве аргумента функции JavaScript. Второе значение key не является ключевым значением функции javascript, а значением ключа в ветке. Почему это и как исправить это можно прочитать в моем первоначальном ответе:

Twig - это шаблонный движок, написанный на PHP. Это означает, что он работает на стороне сервера и выводит текст в коде. Затем код отправляется в браузер, а браузеры анализируют и обрабатывают/исполняют код HTML, CSS и JavaScript.

Таким образом, невозможно выполнить какой-либо код ветви с помощью JavaScript.

Однако вы можете просто исправить свой код, используя FosJsRoutingBundle. Этот пакет делает именно то, что он говорит, он может обрабатывать большинство функций маршрутизации Symfony на стороне клиента в JavaScript.

Ваш код станет что-то вроде:

function bookConfirm(key) { 
    if (confirm("Is it OK?")) { 
     alert("OK!!"); 

     location.href = Routing.generate('acme_member_bookLesson', { key: key }); 
    } else { 
     alert("cancel!"); 
    } 
} 

Подробнее об этом в their docs

+0

Я отредактировал свои первые темы. Я использую это предложение в {% for%} loop.So 'key' должен быть изменен, но он всегда показывает то же самое .... Могу ли я иметь какой-либо способ slove this? – whitebear

+0

@whitebear отредактировал ответ –