Symfony(SonataAdmin) - Ajax调用控制器 - 在js文件中迁移javascript twig失败

问题描述 投票:0回答:1

我有一个使用SonataAdminBundle的标准Symfony项目。

我在视图trainer-edit.html.twig中的balise中有以下javascript:

       $.ajax({
            url: '{{ admin.generateObjectUrl('massEvents', object) }}',
            data: datas,
            type: 'post',
            success: function (response) {
                $('.sonata-ba-form form').removeAttr('data-original');
                window.location.reload(true);
            }
        });

为了更好地划分代码,我决定创建一个文件trainer-edit.js并将我的javascript迁移到它中并使用以下方法在我的视图中引用它:

<script type="text/javascript" src="{{asset('assets/js/Admin/Trainer/trainer-edit.js') }}"></script>

问题是,代码的那一部分显然无法在.js文件中解析,因为它是树枝:

url: '{{ admin.generateObjectUrl('massEvents', object) }}'

所以我想知道两件事(我是symfony的新手):

  • 在symfony(使用sonata)环境中分割代码是一种很好的方法吗?为什么或者为什么不 ?
  • 如果是这样,允许我直接在js中映射控制器的解决方法是什么?

先谢谢你们

javascript php ajax symfony sonata-admin
1个回答
0
投票

你可以使用FOSJsRoutingBundle。这会将路由器暴露给您的js,可用于在您的javascript中访问您的symfony路由。

见:https://symfony.com/doc/master/bundles/FOSJsRoutingBundle/usage.html#router-service

© www.soinside.com 2019 - 2024. All rights reserved.