2013-06-21 57 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!"); 
    } 
} 

,但它顯示

'變量 「鍵」 不存在AcmeMemberBundle:在行show.html.twig 19:默認'

我怎樣才能解決這個問題?使用Javascript和鏈接生成器有點複雜。

+0

是什麼* 「鍵」 *是指什麼?你忘了把它作爲控制器中的一個參數嗎?或者你在做'for'循環嗎? – Touki

回答

2

編輯:第二個key不在循環中,這意味着它將始終具有最後一個循環的值。您輸出的值爲key作爲JavaScript函數的參數。第二個key值不是javascript函數的關鍵值,而是twig中的關鍵值。爲什麼是這樣以及如何修復它可以在我的原始答案中閱讀:

Twig是一個用PHP編寫的模板引擎。這意味着它在服務器端運行並輸出代碼中的文本。然後代碼發送到瀏覽器,瀏覽器解析並呈現/執行HTML,CSS和JavaScript代碼。

所以不可能用JavaScript來執行一些小枝代碼。

但是,您可以簡單地使用FosJsRoutingBundle修復您的代碼。該捆綁包完全按照它的說法,它可以在JavaScript中處理客戶端上的大部分Symfony路由功能。

您的代碼將成爲類似:

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%}循環中使用了這個句子。所以'鍵'應該改變,但它總是顯示相同的....我可以用任何方式解決這個問題嗎? – whitebear

+0

@whitebear編輯答案 –

相關問題