2016-08-28 6 views
1

コントローラから別のコントローラにリダイレクトする必要があります。引数を指定してSilexリダイレクト

$app->get('/test', function(Request $request) use ($app) { 

    return $app->redirect($app["url_generator"]->generate("success", [ 
     "myArg" => $myArg 
    ])); 
}); 


$app->get('/test/success', function(Request $request, $myArg) use ($app) { 

    return $app['twig']->render('confirmation.twig', [ 
     'myArg' => $myArg, 
    ]); 
})->bind('success'); 

しかし、...私はルート「/テスト/成功」にリダイレクトしたいと私のconfirmation.twigテンプレートに$ myArg変数を渡し、それを行うには良い方法であることはありませんように見えます。

ありがとうございました。

+0

変数をセッションに保存しますか? – jedifans

答えて

2

あなたの関数の引数に$ myArgを置くことによって、SilexはあなたのURLのパラメータであることを期待しますが、route definition isn't dynamicは動作しません。

関数の引数からパラメータを取得する場合は、ルート定義を/test/success/{myArg}のように変更する必要があります。

+0

できるだけ中立なURLが必要なので、カスタム変数は必要ありません。 $ myArgはブール値です。 – Macbernie

+0

Silexはあなたの他の関数を直接呼び出すことはありません。それはあなたのブラウザにそれを行うよう伝えるので、ブール値を渡すことはできず、文字列値に変換されます。 URLのパラメータとしてmyArgを配置しないため、URLジェネレータはURLにクエリ文字列として追加します。したがって、あなたのURLは ''/test/success?myArg = 1''のようになります。 あなたのアクションから値を取得したい場合、あなたの関数にリクエストを渡し、 '' $ request-> get( 'myArg'); ''を実行する必要があります。次に、文字列値をブール値に変換する必要があります。 – Jonag

関連する問題