当谈到js文件,控制器,模板之间的通信时,我非常注意js和ajax。
我有这样的不同链接:
<a class="details" data-index ={{i}}> Link 1 </a>
但点击它们不会加载另一个页面,而是打开一个迷你页面,每个链接应该有不同的变量。
我想做这样的事情:
$('.details').on('click', function(){
var index = $(this).data('index');
{% include 'MyBundle::information.html.twig' with {'var':index} %}
});
但是这样.js不会将索引变量赋给twig而且我得到索引未定义的错误:(
如何解决这个问题?这不需要通过控制器。更改“var”值可以完成工作。
答案 0 :(得分:2)
最好的方法是使用FOSJsRoutingBundle,如果由于某种原因您不想使用该捆绑包,则可能会执行以下操作:
$('#details').on('click', function(){
var index = $(this).data('index');
var $whereToLoadContent = $("#divid") ; //where you want to load data
//__index__ is just a placeholder
var routeWithPlaceHolder= "{{ path('route_name',{'var':'_index_'}) }}" ;
var routeToLoad = routeWithPlaceHolder.replace("_index_",index) ;
$whereToLoadContent.load(routeToLoad) ;
});
不确定语法是否正确但希望您明白这一点。我再次建议你使用FOSJsRoutingBundle,如果你要这么做的话。