[英]How to generate Symfony 2 twig URL with parameter value from Javascript?
我想將查詢字符串參數從javascript(jquery)附加到symfony 2 url。 我想將選定的單選按鈕的值傳遞給ajax請求,例如我想做的普通php
$(document).ready(function() {
$('.id_radio').click(function() {
$.ajax({
'url': 'example.php?id='+($this).val(),
'success': function(r) {
$('#div1').html(r);
}
});
});
如何在symfony2 twig中生成這樣的URL? 我們在symfony 2 twig中生成URL
{{ path('example_path', {'id': id}) }}
其中id是twig變量。
我嘗試使用FOSJsRoutingBundle,但不知道是否是同樣的問題,不知道如何使用它?
我在下面試過,但它沒有用。
$('.id_radio').click(function() {
alert(Routing.generate('example_path', {
'id': $(this).val()
}));
$.ajax({
'url': Routing.generate('example_path', {
'id': $(this).val()
}),
'success': function(r) {
$('#div1').html(r);
}
});
});
koskoz下面提到的解決方案工作,我沒有傳遞options = {“expose”= true}但是在添加它之后工作了。
但還有一個問題。 它只在我們不刷新頁面之前有效。 如果我們刷新頁面,它不起作用。 為了使它工作,我必須刪除symfony緩存文件。
如果我們已經在一個瀏覽器中打開它,它在其他瀏覽器中不起作用。
這正是FOSJsRoutingBundle的目標:
您可以在JavaScript中配置要公開的路由,加載JS然后只需執行以下操作:
Routing.generate('my_route_to_expose', { id: 10 });
代替
/**
* @Route("/example/{name}", name="example_path", options={"expose"=true})
* @Template
*/
public function exampleAction($name)
{
}
並使用FOSJsRoutingBundle
$('.id_radio').click(function() {
alert(Routing.generate('example_path', {'id': $(this).val()}));
$.ajax({
'url': Routing.generate('example_path', {'id': $(this).val()}),
'success': function(r) {
$('#div1').html(r);
}
});
});
以下對我來說效果更好,
/**
* @Route("/example", name="example_path", options={"expose"=true})
* @Method({"GET"})
* @Template
*/
public function exampleAction()
{
}
$('.id_radio').click(function() {
$.ajax({
'url': '{{ path('example_path') }}',
'data': 'name='+$(this).val(),
'type': 'GET',
'success': function(r) {
$('#div1').html(r);
}
});
});
從這里獲取fosjsrouting包: https : //github.com/FriendsOfSymfony/FOSJsRoutingBundle並在您的路由文件中為該路由添加
options:expose:true
在你的js文件中添加url = Routing.generate('route_name',{parameter:parameter_value});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.