我正在尝试使用FOSJsRoutingBundle
从symfony路由生成网址。
我按照doc。
我将文件包含在base.html.twig
:
{% block scripting %}
...
<script type="text/javascript" src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>
...
{% endblock %}
并且不会出现包含错误。但是生成网址的尝试失败了:
console.log(Routing.generate('usuarios_crear'));
GET http://appsmanantiales.local/web/app_dev.php/js/routing?callback=fos.Router.setData 500(内部服务器错误)listar:131未捕获错误:路由 “usuarios_crear”不存在。 router.js:9
在routing.yml
我有:
usuarios_crear:
pattern: /AbmUsuarios/crear
defaults: { _controller: AbmBundle:Usuario:crear }
options:
expose: true
该路线位于php app/console fos:js-routing:debug
列表中:
usuarios_crear ANY ANY / AbmUsuarios / crear
有什么想法吗?
答案 0 :(得分:3)
你的代码很棒。
我建议您打开问题here,这很可能是you're not the only one to have that issue的错误。
答案 1 :(得分:3)
这可能比你想象的要容易。
访问此处生成的页面:{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}
它应该有您的公开路由的json编码列表。如果您的路线在那里,那就很好。
如何检查执行console.log(Routing.generate('usuarios_crear'));
的时间
在您尝试之前,该文档应该准备好了。所以确保它是(即jQuery's $('document').ready()
)。
答案 2 :(得分:2)
阅读Github issues,找到作者建议不使用dev-master版本的this。 我做降级到“@stable”,并且工作(现在)。 composer.json行可能是:
“friendsofsymfony / jsrouting-bundle”:“@ stable”
答案 3 :(得分:0)
在composer.json文件中不要求dev-master
,永远不要!这是一种不好的做法。
请依靠稳定版本:https://github.com/FriendsOfSymfony/FOSJsRoutingBundle/releases
答案 4 :(得分:0)
我遇到了同样的问题,解决方案是在您的安全配置中包含匿名访问的^/js/*
路由。
我希望它有所帮助!
答案 5 :(得分:-1)
尝试使用此代码
假设您有一个onclick
函数,在单击时会收到id
,因此您的js代码将是这样的
function show(id)
{
var url = '{{ path('usuarios_crear',{ id: 'id' }, {"callback": "fos.Router.setData"}) }}';
url = url.replace("id", id);
window.location.href = url;
}