如何在Symfony2中获取控制器动作的路径?

时间:2014-02-08 08:18:56

标签: javascript php symfony post twig

我在练习symfony2。我遇到了一个问题:

我刚做了一个简单的twig页面,它将数据发布到控制器的一个动作,并且有一个函数(它可以工作):

$.ajax({
    type: 'POST',
    url: "{{ path('my_test_account_register') }}",
    data: account,
    success: function(msg){
        alert("Succeed!");
    },
    error: function(XmlHttpRequest,textStatus, errorThrown){
        alert ("Failed! ");
    }
}

我不想为我的每一个动作添加注释,不管怎样。我想将url: "{{ path('my_test_account_register') }}"替换为url: "{{ path('MyTestBudnle:Account:register') }}",但我失败了。

我的问题是:如何在控制器中指定动作的URL?也许这是一个愚蠢的问题,这是我第一次使用stackoverflow。所以,很高兴见到你们!

2 个答案:

答案 0 :(得分:1)

我建议你使用

url: Routing.generate('state_list'),

查看FOSJsRoutingBundle

答案 1 :(得分:0)

您(正确)使用的树枝函数path(),为给定的路径名​​称和一些可选参数创建网址。

控制器可以为同一操作设置不同的路由(从而使用不同的URL)。因此,如果要查找特定操作的网址,则无法使用Bundle:Controller:Action表示法。相反,您必须使用路线名称。

path()render()之间的区别在于,render()包含子请求对模板中特定操作的响应。因为这一切都在内部发生,所以不需要为此生成URL。您甚至可以使用render()来执行没有路径的操作。