我知道我的问题非常简单明了,但无论如何我都会问:希望有人能给我一个提示。
我正在使用Symfony2重写PHP Web应用程序。我需要对数据库对象(具有主键和其他两个字段,称为field1
和field2
)执行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 }
但它不起作用。
所以我的问题是:我误解了路由语法(如果是的话,哪个是正确的)?或者我是否缺少关于如何正确地将请求参数拆分到控制器的东西?
提前致谢
答案 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