0
// route
TestTestAppBundle_foobar:
    pattern:  /foobar
    defaults: { _controller: TestTestAppBundle:Default:fooar }


//controller

public function foobarAction(Request $request)
    {
        $request = $this->getRequest();
        $method = $request->getMethod();
        $var =  $request->query->keys();
        $response = new Response('Content', 200, array('content-type' => 'text/html'));
        $response->setContent($var);
        return $response;
    }

URLを呼び出しているとき

/foobar?foo=バー

その後、空の配列を返します。代わりに、GET パラメータを返す必要があります。

symfonyでGETリクエストを処理するには?

4

2 に答える 2

2

patternたとえば、スラッシュを追加してみてください

pattern:  /foobar/

/foobarまた、ルートがと/foobar/パターンの両方に一致することも保証します。

于 2012-04-25T11:03:24.053 に答える
2

次の 2 つの理由から、このように機能することはありません。

  • 私が見る限り、クエリ文字列は正常に取得されていますが、setContent少し混乱しています。最初の引数は配列ではなく、文字列にする必要があります。動作$var[0]し、コンテンツを に設定しfooます。

  • また、ルーティングが少し間違っています。あなたのパターンはですが、同じではない/foobar開こうとしています。/foobar/を設定すると、 と の両方をpattern: /foobar/使用できます(実際には にリダイレクトされます)。/foobar//foobar/foobar/

ただし、query->keys()この場合、これはキーのみを返します。キーと値の両方を取得する場合は、値のみにquery->all()orを使用する必要があります。query->get('foo')foo

$request = $this->getRequest();また、リクエストはすでにアクションの最初の引数であるため、使用する必要はありません。すぐに使えます。

setContentの最初の引数がすでにそれを呼び出しているため、この場合も少し役に立たないResponseため、追加の関数呼び出しを使用せずにそこに設定できます。

于 2012-04-25T11:22:57.197 に答える