Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Sonata/Symfony2中使用AJAX调用而不是路由_Ajax_Symfony_Sonata Admin - Fatal编程技术网

在Sonata/Symfony2中使用AJAX调用而不是路由

在Sonata/Symfony2中使用AJAX调用而不是路由,ajax,symfony,sonata-admin,Ajax,Symfony,Sonata Admin,我使用索纳塔是为了满足项目中的特定需求 事实上,我制作了一个JS接口(使用ExtJS),它只有一个页面,每个按钮只调用一个AJAX请求来显示一些内容。因此,永远不会重新加载页面。URL类似于www.blob.com/blob 一个按钮应该通过AJAX调用调用Sonata管理界面。 它可以工作,管理界面显示在一个ExtJS容器中 但是,当我点击管理界面中的一个按钮(如add按钮)时,它会将我重定向到Sonata管理员URL,如www.blob.com/Admin/dashboard/list/ad

我使用索纳塔是为了满足项目中的特定需求

事实上,我制作了一个JS接口(使用ExtJS),它只有一个页面,每个按钮只调用一个AJAX请求来显示一些内容。因此,永远不会重新加载页面。URL类似于www.blob.com/blob

一个按钮应该通过AJAX调用调用Sonata管理界面。 它可以工作,管理界面显示在一个ExtJS容器中

但是,当我点击管理界面中的一个按钮(如add按钮)时,它会将我重定向到Sonata管理员URL,如www.blob.com/Admin/dashboard/list/add等

因此,我希望Sonata管理界面中的所有按钮都使用AJAX,而不是刷新页面

我找到了这个很好的答案。但我几乎不能理解它,而且它似乎只适合特定的需要

有人知道一个“容易”处理的解决方案吗。 因为目前我看到的唯一解决方案是编辑我的包(~50)中的所有AdminClass和控制器


谢谢,希望我已经尽可能清楚了。

我想你可以在链接(
标记)上使用Javascript捕获所有点击事件,类
sonata ba action
将在AJAX中处理

比如:

jQuery('a.sonata-ba-action').on('click', function (e) {
    var url = jQuery(this).attr('href');

    jQuery.get(url, function (data) {
        jQuery('#yourContainer').html(data);
    });

    return false;
});

嗯,很有趣。我会去看看,如果能成功的话,那就太好了!嗯,看来我没能成功。我试图添加一个警报(“ok”);在您的代码中,但没有显示任何内容,因此我猜该函数不会触发此a.sonata-ba-action的任何内容。顺便问一下,您确定a.sonata-ba-action是引用具有sonata-ba-action类的对象中包含的内容的正确方法吗?您还必须捕获所有表单提交按钮(我想你可以使用他们的名字,只使用Sonata Admin submit按钮来完成这项工作)。我向你提出了一个解决方案,但我已经不再这么做了。是的,好吧,我明白了,但这看起来很乏味。你的第一个解决方案看起来很有趣,但暂时不起作用,不知道它是否会:(.也许你可以使用
来保持管理员界面的答案,但它会改变什么?路由仍将由Sonata处理。