リダイレクト時にスラッシュ(/)でなくGETパラメータでリダイレクトさせたい

いまだにハマッたまま抜け出せないので、もう諦めて別の方法で回避していますが、symfony

$this->redirect('fuga/hoge?sid=xxxx');

とすると /fuga/hoge/sid/xxxx に勝手に変換されてリダイレクトされます。

symfonyの強力なサポーターであるid:innx_hidenoriさんとコメントが被ってますが、symfonyサポーターの優しさですw

さて、本題の件ですが、結論からいうと対処できます。
ただし、symfonyのバージョンによって対処方法が異なります。

symfony1.0, 1.1系(factories.ymlでextra_parameters_as_query_stringの設定ができないバージョン)

sf_url_formatが'PATH'という文字列で指定されている場合にスラッシュで自動変換されます。
これを'GET'に指定すればGETパラメータでリダイレクトを行ってくれます。

<?php
  public function executeIndex(sfWebRequest $request)
  {
    sfConfig::set('sf_url_format', 'GET');
    $this->redirect('article/list/1?sid=1');
  }

symfony1.2以降

factories.ymlでextra_parameters_as_query_stringをtrueに設定すれば全てのパラメータがGET形式で生成されます。
注意事項もあるので以下の記事が参考になります。
genURL()でQueryStringをパス形式にしたくない場合 - kopug memo

特定のルーティングだけを変更したい場合は、1.2以降から用意された強力なルーティングの設定でできます。
ルーティングの設定をアクションにハードコーディングするのは避けた方が良いので、新しいバージョンのほうが親切になってますね。

    articles:
      url:     /articles/:page
      param:   { module: article, action: list, page: 1 }
      options: { extra_parameters_as_query_string: true }

symfony1.0系はサポートがもうすぐ終わりますが稼働し続けるプロジェクトは多いと思います。そういう意味でもこのような情報は有益かと思うので記事に残しておきます。

よく考えたら今年最初のポストですね。すいません。がんばります。