从 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"});