2016-08-28 95 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'); 

但似乎沒有成爲好辦法做到這一點......我只是想重定向到路徑「/測試/成功」,並傳遞$ myArg變量來我confirmation.twig模板。

感謝您的幫助。

+0

在會話中存儲變量? – jedifans

回答

2

通過將$ myArg放入函數的參數中,Silex希望它是來自您的URL的參數,但是您的route definition isn't dynamic因此無法工作。

如果你想從你的函數的參數中獲取參數,你必須修改你的路由定義爲/test/success/{myArg}

+0

我需要一個儘可能中立的URL,所以沒有自定義變量。 $ myArg是一個布爾值。 – Macbernie

+0

Silex不會直接調用你的其他函數,它會告訴你的瀏覽器做它,所以你不能傳遞一個布爾值,它會被轉換爲一個字符串值。 由於您不想將myArg作爲URL的參數,因此URL生成器會將其作爲查詢字符串添加到您的URL中。所以你的URL看起來像''/ test/success?myArg = 1''。 如果你想從你的action中檢索它的值,你必須將請求傳遞給你的函數,並執行''request-> get('myArg');''。然後你需要將字符串值轉換爲布爾值。 – Jonag