【问题标题】:FOSJsRoutingBundle dont recognize routeFOS Js Routing Bundle 无法识别路由器
【发布时间】:2014-01-30 06:04:30
【问题描述】:

我正在尝试使用FOSJsRoutingBundle 从 symfony 路由生成 url。 我关注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 %}

并且不会出现包含错误。但是尝试生成 url 失败:

console.log(Routing.generate('usuarios_crear'));

获取 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 ANY /AbmUsuarios/crear

有什么想法吗?

【问题讨论】:

  • 很明显,但很容易错过,问题但是你清除了缓存吗?
  • 您找到解决方案了吗?我有同样的问题:/
  • @nielsv 尝试安装稳定版,而不是 master-dev。

标签: javascript symfony url-routing


【解决方案1】:

你的代码很棒。

我建议你打开一个问题here,这很可能是you're not the only one to have that issue 的错误。

【讨论】:

  • 谢谢我考虑一下。
【解决方案2】:

这可能比您想象的要容易。 访问此处生成的页面:{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }} 它应该包含您的公开路线的 json 编码列表。如果你的路线在那里,你就很好。

执行console.log(Routing.generate('usuarios_crear'));时如何检查 在您尝试之前,文档应该已经准备好。所以请确保它是(即jQuery's $('document').ready())。

【讨论】:

  • 是一样的结果。我在 Document.ready、插件、JS plain 上进行测试。
【解决方案3】:

阅读Github issues,发现this作者建议不要使用dev-master版本。 我降级到“@stable”,并且工作(现在)。 composer.json 行可能是:

“friendsofsymfony/jsrouting-bundle”:“@stable”

更多详情:The full install guide.

【讨论】:

    【解决方案4】:

    永远不要在 composer.json 文件中要求 dev-master,永远永远!这是一种不好的做法。

    请依赖稳定版本:https://github.com/FriendsOfSymfony/FOSJsRoutingBundle/releases

    【讨论】:

      【解决方案5】:

      尝试使用此代码 假设您有一个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;
      
      } 
      

      【讨论】:

        【解决方案6】:

        我刚刚遇到了同样的问题,解决方案是在您的安全配置中包含 ^/js/* 匿名访问路由。

        希望对你有帮助!

        【讨论】:

          猜你喜欢
          • 2015-12-09
          • 2018-05-13
          • 2019-11-16
          • 2012-07-15
          • 1970-01-01
          • 2019-03-18
          • 2019-10-23
          • 2021-02-07
          • 2013-12-12
          相关资源
          最近更新 更多