Symfony2基本URL路由问题

时间:2011-07-20 11:02:21

标签: controller query-string url-routing symfony

我知道我的问题非常简单明了,但无论如何我都会问:希望有人能给我一个提示。

我正在使用Symfony2重写PHP Web应用程序。我需要对数据库对象(具有主键和其他两个字段,称为field1field2)执行CRUD操作

在我以前的网络应用中,我曾经回忆过这个网址:

  http://myhost/updateProduct.php?id=foo&field1=value1&field2=value2

调用updateProduct.php脚本来更新id = foo的对象,为field1设置value1,为field2设置value2。

现在我愿意使用Symfony2控制器来完成这项工作......我想知道应该为此设置哪个路由。我的控制器是ProductController,它嵌入了updateAction($id,$field1,$field2)方法。

我试过类似(yml语法)的东西:

myBundle_update:
    pattern:  /product/update/{id}/field1={value1}&field2={value2}
    defaults: { _controller: TestMyBundle:Product:update } 

但它不起作用。

所以我的问题是:我误解了路由语法(如果是的话,哪个是正确的)?或者我是否缺少关于如何正确地将请求参数拆分到控制器的东西?

提前致谢

1 个答案:

答案 0 :(得分:3)

您可能希望自己的路线看起来像这样:

pattern:    /product/update/{id}/{value1}/{value2}

这样只需调用/ product / update / 1 / fieldValue1 / fieldValue2即可更新产品。

我不确定,但是可能路线在定义&的路线上有一些问题。在它的路线。

更新: 啊,问题很可能在于你的两个值之间没有/。 Symfony2使用正则表达式[^ /] +作为参数的标准正则表达式。

http://symfony.com/doc/current/cookbook/routing/slash_in_parameter.html