2011-07-20 6 views
1

私の質問は非常に単純ですが、とにかく質問します。誰かが私にヒントを与えることを願っています。Symfony2の基本的なURLルーティングの問題

私はSymfony2を使ってPHP Webアプリケーションを書き直しています。私の必要性は、私はこのURLを呼び出すために使用される私の古いウェブアプリでは、データベース・オブジェクト上でCRUD操作を実行することです(主キーと他の二つのフィールドを持っている、field1field2と呼ばれる)

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

updateProduct.phpスクリプトを呼び出してid = fooのオブジェクトを更新し、field1に値1を設定し、field2に値2を設定します。

今、私はその仕事をするためにSymfony2コントローラを使いたいと思っています...私はどのルーティングを設定すべきなのでしょうか?私のコントローラはProductControllerであり、updateAction($id,$field1,$field2)メソッドを埋め込んでいます。

私は(YML構文)のようなものを試してみました:

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 /起動します。

わかりませんが、経路に&を定義しているルートにはおそらくルーティングに問題があります。

更新: ああ、この問題は、おそらく2つの値の間に/がないことにあります。 symfony2は、パラメータの標準正規表現として正規表現[^ /] +を使用します。

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

+0

あなたが言及したパターンは有効です。私はそれを使用することを考えていました。しかし、フィールド名を指定できる「ユーザーフレンドリーな」URLを使用したかったのです。 Symfony2ルーティングで&と=文字をエスケープする方法はありませんか? VALUE1を: – csparpa

+1

あなたはこの 要件のようなパターンに要件を追加するために何かを試みることができる「[^&] +」 だから、それは(最初& – kufi

+0

&および=パーセントをエンコードすることができます見つけたときに検索を停止します%26と%3D)、経路は壊れませんが、Symfony2ルータはそれらをマッチさせません(文字通り%26と%3Dを一致させようとするので)。 – Adrian