0

从 Symfony 4 开始,我需要从 javascript 生成我的控制器(将来需要一些参数的控制器)的动态 url 路径。

经过一些谷歌搜索后,我通过一个简单的方法找到并安装了 jsrouting-bundle composer require friendsofsymfony/jsrouting-bundle(我执行了配方)

我在我的树枝文件中包含这些行:

<script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script src="{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}"></script>
<script src="build/js/global.js"></script>

当我加载我的页面时,没有出现任何 javascript 错误。

所以,我创建了这个非常简单的 symfony 控制器(用于 AJAX 调用):

/**
 * @Route("/API/test", name="ajax_test")
 */
public function test(){
    $test = [
        'a' => 'foo',
        'b' => 'faa',
    ];
    return new JsonResponse($test);
}

在我的自定义 javascript 脚本 (global.js) 中,我尝试了这个:

警报(路由。生成('ajax_test'));

但是当我加载页面时,我得到了这个 javascript 错误:

Error: The route "ajax_test" does not exist.

为什么找不到路线?我的错误在哪里?

备注:

friendsofsymfony/jsrouting-bundle 文档中,从我执行命令时bin/console assets:install --symlink web开始出现错误The target directory "web" does not exist.。所以,我简单地执行了bin/console assets:install --symlink

如果我去“ http://localhost/mywebsite/public/js/routing?callback=fos.Router.setData ”,我得到/**/fos.Router.setData({"base_url":"\/mywebsite\/public","routes":[],"prefix":"","host":"localhost","port":"","scheme":"http"});

4

1 回答 1

0

我只是在我的控制器的注释中添加选项“暴露”设置为 true,如下所示:

/**
 * @Route("/API/test", name="ajax_test", options={"expose"=true})
 */
public function test(){
    $test = [
        'a' => 'foo',
        'b' => 'faa',
    ];
    return new JsonResponse($test);
}
于 2018-11-14T12:44:44.600 回答