Jquery 将对象从Ajax输出到Twig
在symfony3中,我有一个排序,我使用ajax从后端获取对象 这在控制器中:Jquery 将对象从Ajax输出到Twig,jquery,ajax,twig,symfony,Jquery,Ajax,Twig,Symfony,在symfony3中,我有一个排序,我使用ajax从后端获取对象 这在控制器中: if($request->getMethod() === 'POST' && isset($_POST['sort'])) { if($_POST['sort'] === 'title_up') { $products = $em->createQuery("SELECT a FROM AppBundle:Product a ORDER BY a.title ASC")-&
if($request->getMethod() === 'POST' && isset($_POST['sort'])) {
if($_POST['sort'] === 'title_up') {
$products = $em->createQuery("SELECT a FROM AppBundle:Product a ORDER BY a.title ASC")->getArrayResult();
... etc.
}
}
return new JsonResponse($products);
我在前端获取对象:
$('#form_select').on('change', function() {
var path = "{{ '/' }}";
var optionSelected = $("option:selected", this);
console.log(path);
var valueSelected = this.value;
if($.trim(valueSelected) != '')
{
/*$('#items').text(data);*/
$.post(path, {sort : valueSelected}, function(data) {
console.log('dump', data[0].title);
for(var i = 0; i < data.length; i++) {
$('#items').append(data[i].title)
}
})
}
});
$('form#u select')。在('change',function()上 {
var path=“{{'/'}}”;
var optionSelected=$(“选项:已选择”,此选项);
console.log(路径);
var valueSelected=此值;
如果($.trim(valueSelected)!=“”)
{
/*$(“#项”)。文本(数据)*/
$.post(路径,{sort:valueSelected},函数(数据){
console.log('dump',数据[0]。标题);
对于(变量i=0;i
问题是:有没有比使用循环和添加数据[i]更好的方法来渲染对象。说明,数据[i]。标题。。。等等
我正在使用twig,如果我能以某种方式将变量数据传递给twig以创建我需要的视图,那就太好了。(就像我渲染从控制器传递到twig的任何其他变量一样)twig是PHP的模板引擎,所以它是服务器端的。这意味着您不能将某些内容从前端(JS)直接传递到Twig 但是,您仍然可以在控制器中呈现细枝模板,并在ajax调用中返回,然后将其粘贴到所需的位置
return new JsonResponse([
'html' => $this->renderView('your_twig_file.html.twig', ['products' => $products])
]
);
如果你不喜欢append,那么就使用一个模板引擎,twig就是你目前正在使用的php。这应该会得到更多的喜爱。