2013-02-06 59 views
0

我剛剛用Slim框架構建了一個寧靜的API。對於錯誤情況我簡單地爲每個錯誤的情況下適當的錯誤代碼響應,並調用$ APP->停止,例如:超薄框架暫停錯誤代碼不起作用

$app->halt(403, "Unauthorized"); 

但是,當我蜷縮我的API與-v,當我看到標題的火狐HTTPFox我總是看到錯誤代碼500.其他人注意到這一點?有什麼我失蹤?

+0

我從來沒有使用'halt()'方法,當我想返回一個特定的http狀態時,我使用'$ app-> response() - > status(403)''。我不確定有什麼不同。 – Odi

+0

假設我會嘗試。但苗條的文檔具體說,你可以使用暫停給狀態代碼。再次,也許我不理解的東西。 – Hutch

回答

0

不允許在路由回調之外調用halt()方法。 你應該這樣使用;

$app->get('/method/', function() { 
    //logical controls 
    //do something 
    //or 
    $app->halt(); 
}); 
1

我最近自己遇到了同樣的問題,因爲我忘記在我的函數中實例化$ app變量。

如果沒有明確說明你的函數中使用($應用程序),嘗試添加$ APP-停止之前以下行(403,「未授權」)才能看到希望的錯誤代碼:

$app = Slim::getInstance(); 
0

halt()和setStatus()之間有區別。

隨着停止(),你會停止當前腳本執行,並根據HTTP狀態代碼和消息您選擇發送渲染響應。您可以使用此代碼的任何地方做它在您的應用程序:

$app = \Slim\Slim::getInstance(); //if you don't have access to $app 
$statusCode = 403; 
$body = 'Unauthorized'; 
$app->halt($statusCode, $body); 
//App will stop immediately 

隨着setStatus()$這個 - >響應 - >狀態();您只會更改您發送的HTTP狀態碼,但您的應用程序將繼續像往常一樣執行,不會停止。它只會改變Slim在路由執行結束時發送給客戶端的頭文件。

$app = \Slim\Slim::getInstance(); //if you don't have access to $app 
$statusCode = 403; 
$app->response->setStatus(400); 
//App will continue normally