2011-07-20 69 views
1

我知道我的問題很簡單,但我會問它:希望有人可以給我一個提示。Symfony2基本的URL路由問題

我正在使用Symfony2重寫PHP Web應用程序。我需要的是執行對數據庫對象的CRUD操作(其中有一個主鍵和另外兩個領域,被稱爲field1field2

在我的舊網絡的軟件,我用回憶這個網址:

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

調用updateProduct.php腳本更新id = foo的對象,將field1的value1設置爲field2的value2。

現在我願意使用Symfony2控制器來完成這項工作......我不知道應該爲此設置哪個路由。我的控制器是ProductController,它嵌入了一個updateAction($id,$field1,$field2)方法。

我試圖像(陽明語法):

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

,但它不工作。

所以我的問題是:我錯誤的路由語法(如果是這樣,哪個是正確的)?或者有什麼我錯過了如何正確地將請求參數分配給控制器?

在此先感謝

回答

3

你可能想你的路線,看起來像這樣:

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

這樣纔剛剛調用/產品/更新/ 1/fieldValue1/fieldValue2更新產品。

我不確定,但可能路由與您的路由有一些問題,在其路由中定義&。

更新: 啊,問題很可能在於你沒有在你的兩個值之間。 Symfony2使用正則表達式[^ /] +作爲參數的標準正則表達式。

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

+0

您提到的模式是有效的,我一直在考慮使用它。但是我想用某種「用戶友好」的URL來指定字段名稱,這種或那種方式。沒有任何方法可以轉義Symfony2路由中的&和=字符嗎? – csparpa

+1

你可以嘗試一些對需求增加的格局是這樣 要求: 值1:「[^&] +」 因此它將停止當它找到的第一個和 – kufi

+0

&和=可百分比編碼(搜索%26和%3D),並且路線不會中斷,但Symfony2路由器不會匹配它們(因爲它會嘗試從字面上匹配%26和%3D)。 – Adrian