web-dev-qa-db-ja.com

symfonyリクエストはすべてのURLパラメータを取得します

Symfony\Component\HttpFoundation\Requestオブジェクトがあり、そこから提供されたすべてのURLパラメーターをフェッチしたいと思います。つまり、ユーザーがhttp://example.org/soempage?param1=value1&param2=value2&param3=value3にアクセスしたとき

これらの値['param1','param2','param3']を持つ配列を生成したいと思います。

また、私はこれを見ました: Symfony2のすべての投稿パラメータを取得する方法は?

そして、私は上記に基づいて以下を試しました:

    /**
     * @var request Symfony\Component\HttpFoundation\Request
     */
    $parametersToValidate=$request->request->all();
    $parametersToValidate=array_keys($parametersToValidate);

そして

    /**
     * @var request Symfony\Component\HttpFoundation\Request
     */
    $parametersToValidate=$request->all();
    $parametersToValidate=array_keys($parametersToValidate);

望ましい結果が得られませんが、代わりに次のエラーメッセージが表示されます。

クラス「Symfony\Component\HttpFoundation\Request \」の「all」という名前の未定義のメソッドを呼び出そうとしました

編集1

入力を検証する静的メソッドにintを使用するリクエスト。このメソッドはコントローラーを介して呼び出され、再利用の目的でそのように実装されます。

public static function httpRequestShouldHaveSpecificParametersWhenGiven(Request $request,array $parametersThatHttpRequestShouldHave)
    {
        $parametersToValidate=$request->parameters->all();

        if(empty($parametersToValidate)){
            return;
        }

        $parameters=array_keys($parametersToValidate);

        foreach($parameters as $param){
            if(!in_array($parameters,$parametersThatHttpRequestShouldHave)){            
                throw new InvalidNumberOfParametersException(implode(',',$parametersToValidate),implode(',',$parametersThatHttpRequestShouldHave),implode(',',$diff));
            }
        }
    }
5

試しましたか:

$parametersToValidate = $request->query->all();
19
scoolnico