2012-03-22 5 views
0

私はSilexを使用してWebアプリケーションを構築しようとしています。私のルートの中には、その結果が別のルートへの新しいリクエストであることが望まれます。Silex:新しいリクエストを別のルートに返しますか?

$app->get('/', function() use ($app) { 
    //Do something 
    //Request route /route2 
}); 

$app->post('/route2', function() use ($app) { 
    //Do something else 
    return result 
}); 

これはかなり標準的な使用例であるはずですが、私はこれを行う簡単な方法を見つけることができません。私はredirectについて知っていますが、最初の機能で作成されたポストパラメータの新しいセットを使用することはできませんので、リダイレクトしたいだけではありません。

私はSilex/SymfonyとHTTPの両方に新しいので、何かが欠けているのだろうかと思っていますか?

編集:現在のリクエストオブジェクトを変更し、自分のパラメータでポストデータを置き換えてからリダイレクトを行うことを考えていたが、リクエストクラスにはサポートがないようだそれのために。

+0

標準的な使用例ではないと思います。リダイレクトなしで他のルートにジャンプするカスタム投稿フィールドでリクエストを生成したい*私はそれを取得できません: -/ – j0k

+0

私は少し上手く説明しようとします、ここで私がしたいことがあります: '1。 POST/route1 2.ポストフィールドに基づいていくつかの機能を実行する 3.ステップ2で生成されたポストフィールドを持つPOST /ルート2 ' Route1は、例えば、リストからオブジェクトを削除する機能を実行することができます。 Route2に電話して、更新されたリストを表示します。 Route2を3番目のルートから呼び出す可能性を持ちたいので、更新された関数を直接Route1に表示する必要はありません。たとえば、オブジェクトを追加するために使用できます。 –

+1

私にとって、これは基本的にはリダイレクトの目標です:)ここでリダイレクトしないと、ユーザーが削除されたオブジェクトのページを更新するとどうなりますか?削除されたオブジェクトを削除するために '/ route1'を呼び出すと、エラーがスローされます。ユーザーがオブジェクトを追加すると、そのオブジェクトも2度追加されます。 – j0k

答えて

0

あなたはこのようRequest Forwardingを使用することができます。あなたのRequestオブジェクトを作成し、

$app->get('/', function() use ($app) { 
// 
$subRequest = Request::create('/route2', 'GET'); 
return $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST); 
}); 

または代わりの$subRequest

関連する問題