2011-01-16 8 views
3

は私のような、通常のクエリ文字列を経由してパラメータを渡すためにしようとしている:SymfonyのURLに通常のパラメータを渡すには?

/user/login?foo=bar&abc=123 

を不幸にも、どこにもsfRouteのインスタンス内のすべてのデータがのparams fooまたはabcのためのデータが含まれているように見えるしません。これをどうやって解決するのですか?

編集:ここでは私はトムの要求どおりに使用しているコードです:

/apps/api/config/routing.yml:

login: 
    url: /user/login 
    param: { module: user, action: login } 

/アプリケーション/ API /モジュール/ユーザー/アクション/ actions.class.php:

class userActions extends sfActions { 
    public function executeLogin(sfWebRequest $request) { 
     echo '<pre>'.print_r($this->getRoute(), true).'</pre>'; 
    } 
} 

これだけです。 "/ user/login?foo = bar & abc = 123"というURLをクエリ文字列に渡すと、$this->getRoute()にはfooまたはabcの情報が含まれていないことがわかります。

+0

Matt、アップデートを追加しました。 – Tom

+0

Matt ...もう1つのアップデートが追加されました。 – Tom

答えて

2

変数にアクセスし、$ requestオブジェクトを使用し、ないsfRoute:

public function executeSomeAction($request) { } 

$request->getParameter('foo') 

は、それらのリクエストパラメータを受けていますアクション内の関数が入ってくる変数としてそれを宣言してくださいますか

symfonyで$_SERVER['QUERY_STRING']と同等のものを探しているなら、私はそれを見つけず、自分自身に興味があります。

UPDATE:

私はあなたが使っている方法は、唯一のルートを印刷すると思います。これを達成するために必要なのは、前にも触れたように、$ requestオブジェクトを通してアクセスすることだと思います。たとえば、

$params_typed = $request->getParameterHolder(); // ... and grab them from here 

...サーバークエリ文字列を使用するか、受信するパラメータを個別に処理します。

申し訳ありません、私はより多くの助けができません。あなたは、ルーティングでのparamsを定義する場合

SECOND UPDATE:

は実際には、ほんの少しのアイデアをテストしました。YML、このように:

login: 
    url: /user/login 
    param: { module: user, action: login, foo: something, abc: something } 

あなたは経由でそれらにアクセスすることができます:あなたは「extra_parameters_as_query_stringを使用したい場合は、その

routing: 
    class: sfPatternRouting 
    param: 
    extra_parameters_as_query_string: true 
+0

しかし、sfDoctrineRouteでパラメータを使用しようとしています。クエリ文字列でパラメータを使用すると、パラメータを受け付けません。 –

+0

あなたのルーティングルールにはrouting.ymlが含まれていますか? url:/ user/login /:foo /:abc ....? – Tom

+0

いいえ、私はそれらをディレクトリ構造の一部にしたくないので、URLバーに入力することができます:/ user/login?foo = bar&abc = 123 –

1

注:真

$full_path = sfContext::getInstance()->getRouting()->getCurrentInternalUri(); 
関連する問題