簡體   English   中英

Slim Framework重定向與params

[英]Slim Framework redirect with params

我是第一次使用Slim框架,到目前為止一切都是現貨。 但有一件事我似乎無法理解。 發布表單后,我想重定向回同一頁面,但它在網址中使用了一個參數,我無法回復它。 這是我到目前為止:

$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');

任何幫助將非常感激。 謝謝

urlFor方法接受兩個參數:

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

試試這個:

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

對於那些尋找Slim 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

有關從slim 2到slim 3的差異的任何其他信息,請參閱Slim Upgrade Guide

超薄3解決方案

Slim 3解決方案的另一個答案並不是非常優雅,並且還錯過了必須將空數組作為第二個參數傳遞以將查詢參數作為第三個參數傳遞的事實; 沒有它, 不使用任何查詢參數

因此,Slim 3的答案就是以下幾點。

return $response->withRedirect($this->router->pathFor('named.path.of.route', [], [
    'key1' => $value1,
    'key2' => $value2
]));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM