【问题标题】:How to get the path of an action of a controller in Symfony2?如何在 Symfony2 中获取控制器动作的路径?
【发布时间】:2014-02-08 08:18:55
【问题描述】:

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

我刚刚做了一个简单的树枝页面,它将数据发布到控制器的一个动作中,并且有一个功能(它有效):

$.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。所以,很高兴认识你们!

【问题讨论】:

  • 为什么不使用 routing.yml 来指定您的路线并使用它们,而不是在每个操作中使用注释
  • 坦率地说,我更喜欢注解(TωT)ノ
  • 你根本不能使用 Symfony2 标准要求指定路由名称的那种注解
  • @DonCallisto 但是我发现如果你要渲染一些页面,你可以使用{{ render (controller('BlablaBundle:BlaBla:Blabla')) }},我们可以使用这种方法隐藏我们的路径...
  • render path() 与render controller() 略有不同:)

标签: javascript php symfony post twig


【解决方案1】:

我建议你使用

url: Routing.generate('state_list'),

看看FOSJsRoutingBundle

【讨论】:

    【解决方案2】:

    您(正确)使用的 twig 函数 path() 为给定的路由名称和一些可选参数创建 url。

    对于同一操作,控制器可以有不同的路由(因此也有不同的 url)。因此,如果您想找出特定操作的 url,则不能使用 Bundle:Controller:Action 表示法。相反,您必须使用路由名称。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多