2012-03-22 98 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都很陌生,所以我想知道我是否缺少一些重要的東西?

編輯:我可能會補充說我一直在考慮修改當前的Request對象,並用我自己的參數替換髮布的數據,然後執行重定向,但似乎沒有任何對Request類的支持爲了那個原因。

+0

我不認爲這是一個標準的用例。你想要生成一個自定義帖子字段的請求跳轉到其他路由*沒有*重定向...我不明白: -/ – j0k 2012-03-22 17:32:19

+0

我會盡力解釋一點,這是我想要做的: '1。 POST/route1 2.根據發佈字段執行一些功能 3. POST/route2帶有在步驟2中生成的發佈字段。 Route1可以運行一個函數從列表中刪除一個對象, d想調用Route2,它將顯示更新的列表。我不想直接在Route1中顯示更新後的函數,因爲我想有可能從第三個路由中調用Route2,例如可以用來添加一個對象。 – 2012-03-22 20:50:22

+1

對我來說,這基本上是重定向的目標:)如果沒有在這裏重定向,如果用戶刷新已刪除對象的頁面會發生什麼?它會調用'/ route1'來刪除被刪除的對象,然後拋出一個錯誤。如果用戶添加一個對象,它也會被添加兩次。 – j0k 2012-03-23 08:27:51

回答

0

您可以使用Request Forwarding這樣的:的$subRequest

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

或代替,創建你Request對象。