FOSJsRoutingBundle不认识路线

时间:2014-01-11 03:50:39

标签: javascript symfony url-routing

我正在尝试使用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

有什么想法吗?

6 个答案:

答案 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”

更多详情:The full install guide.

答案 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;

}