FOSJsRoutingBundle无法识别路由。

5
我正在尝试使用 FOSJsRoutingBundle 从 Symfony 路由生成 URL。我遵循了 文档
我将文件包含在我的 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'));

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

有什么想法吗?


显而易见,但很容易被忽略的问题,你清除了缓存吗? - qooplmao
你找到解决方案了吗?我也遇到了同样的问题 :/ - nielsv
@nielsv 尝试安装稳定版本,而不是主开发版。 - ramiromd
6个回答

3

感谢,我会考虑这个。 - ramiromd

3
很可能比你想象的更容易。访问此处生成的页面:{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }} 它应该有一个json编码格式的您公开路线的列表。如果您的路线在这里,那就很好。
如何检查当您执行 console.log(Routing.generate('usuarios_crear'));时?在尝试之前,文档应该已经准备好了。因此,请确保它是 (即使用jQuery的$('document').ready()方法)。

是相同的结果。我在Document.ready、插件和JS plain上进行了测试。 - ramiromd

2
阅读Github问题,发现这个问题,作者建议不要使用dev-master版本。 我将其降级到"@stable",现在可以使用了。 composer.json行可能是:

"friendsofsymfony/jsrouting-bundle": "@stable"

更多详情请参见:完整安装指南。


0

我之前也遇到了同样的问题,解决方法是在你的安全配置中包含^/js/*路由以匿名访问。

希望能对你有所帮助!


0

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

} 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接