2015-06-21 70 views
4

我第一次使用Slim框架,到目前爲止一切都在現場。但有一件事我似乎無法擺脫困境。發佈表單後,我想重定向回到同一頁面,但它在URL中使用了一個參數,我無法回到它。這是我到目前爲止:Slim Framework帶參數的重定向

$app->post('/markets-:game', $authenticated(), function($game) use ($app) { 

    $request = $app->request(); 

    $id = $request->post('game3'); 

    $app->flash('global', 'game added'); 
    $app->response->redirect($app->urlFor('games.markets', {"game:$id"})); 

})->name('games.markets.post'); 

任何幫助將不勝感激。感謝

+0

對於Slim v3.x有足夠細節的答案:[#38939583](http://stackoverflow.com/questions/23404355/how-to-use-slim-redirect/38939583#38939583) – MNR

回答

4

urlFor方法接受兩個參數:

  1. 路由的名稱;
  2. 一個包含所有參數的關聯數組(可選)。

試試這個:

$app->response->redirect($app->urlFor('games.markets', array('game' => $id))); 
+0

我的救星:謝謝澄清! –

4

對於任何人誰在這裏的土地尋找一個苗條3解決方案中,信息在升級指南中進行了說明。

要重定向到一個帶參數的路線,現在是如下:

$url = $this->router->pathFor('games.markets', ['game' => $id]); 
return $response->withStatus(302)->withHeader('Location', $url); 

在另一方面,命名路由時,你必須現在使用

$app->get('/', function (Request $request, Response $response) {...})->setName('route.name'); 

,而不是老->name

有關從苗條2到苗條3的差異的任何其他信息可以在Slim Upgrade Guide

+0

參數'遊戲'需要在重定向的路線games.market中接收? –

+0

在這個例子中是的,但你可以刪除數組重定向到沒有參數的路由 – JammyDodger231

+0

注意:如果你的路由期望($ request,$ response,$ args),你可能必須在中間傳遞'[]' 。 Re:這個有用的答案:http://stackoverflow.com/a/41705732/1196358 – ghukill