从ajax symfony2调用控制器的自定义函数



我已经使用Sonata Admin Bundle创建了表单。然后我创建了自己的控制器(TestController)并覆盖CRUD控制器

我在TestController中添加了一个新功能,

namespace IFI2MainProjectBundleController;
use SymfonyComponentSecurityCoreSecurityContextInterface;
use SymfonyBridgeMonologLogger;
use SonataAdminBundleControllerCRUDController as Controller;

//use SymfonyBundleFrameworkBundleControllerController;
use SymfonyComponentHttpFoundationResponse;
class TestController extends Controller
{
    public function getProductPricesAction() {
         file_put_contents("/Applications/XAMPP/htdocs/IFI2 CMS/Logs.txt","HELO",FILE_APPEND);
          return new Response(json_encode($response)); 
    }
}

然后我试图通过我的javascript代码访问这个函数

<script type="text/javascript">
    function test1() {
        $.ajax({
            type:"POST",
            //dataType: "json",
            url: '{{ path('main_project.admin.test')}}',
            success: function(successMsg) {
                alert("successMsg");
            },
            error: function(errorMsg) {
                alert("errorMsg");
            }
        });
     }
</script>

这是我的路线。yml,

main_project.admin.test:
  pattern:  /getProductPrices/
  defaults: { _controller: IFI2MainProjectBundle:Test:getProductPrices}

我已经有了这个实体的services.yml条目,

main_project.admin.cobrand:
    class: MainProjectBundleAdminTestAdmin
    arguments: [~, MainProjectBundleEntityTest, "MainProjectBundle:Test"]
    tags:
        - {name: sonata.admin, manager_type: orm, group: admin, label: Test}
    calls:
        - [setTemplate, [edit, MainProjectBundle:Test:edit.html.twig]]

我的回复中出现以下错误,

没有为控制器MainProjectBundleControllerTestController和当前路由main_project.admin.test 定义_sonata_admin

请帮我怎么嵌入?

谢谢,费萨尔-纳西尔

在管理方法配置中添加新路由Routes

protected function configureRoutes(RouteCollection $collection)
{
    parent::configureRoutes($collection);
    $collection->add('get_product_prices');
}

删除您的路由main_project.admin.test

新路由的前缀是来自管理员的$baseRouteName,名称为:

base_route_name_get_product_prices

使用

{{ path('base_route_name_get_product_prices') }}
//or with admin
{{ admin.generateUrl('get_product_prices') }}

在routing.yml中添加以下内容:

main_project.admin.test:
  pattern:  /getProductPrices/
  defaults: { _controller: IFI2MainProjectBundle:Test:getProductPrices,"_sonata_admin": "main_project.admin.cobrand" }

最新更新