2015-02-12 53 views
1

好,我已經閱讀文檔上修身PHP和看了不少教程,並正在進行有一個應用程序很好。不過,我正在努力處理諸如自定義HTTP響應代碼之類的事情。我設法得到如下:修身PHP自定義HTTP響應頁面

$app->notfound('template.file', array(
    'data' => 'passed' 
)); 

這似乎很好地工作(因爲它應該,因爲它內修身直接的一種方法),但不是我試圖控制的事情,如403響應。我已經控制了使用Apache作爲我通常會做不得,但是我想知道如果有搭配修身的方式,我可以成爲一個自定義不允許頁?或者因爲我已經在Apache級別封鎖了它,Slim會不會注意到?

我看過,我可以手動停止一定的路線?這是我應該這樣做的方式嗎?舉例來說,我不希望有人訪問我的JS目錄,以便:

$app->group('/js', function() use($app) { 
    $app->get('/', functin() use($app) { 
     $app->halt(403, "You shall not pass!"); 
    }); 
}); 

我的原因分組這是因爲我想獲得我的實際腳本,只是沒有目錄瀏覽。

有沒有人遇到過這個?你會建議什麼?還是我完全在思考一些簡單....

回答

2

你可以簡單地重定向用戶到打印您的自定義模板的另一個途徑。例如:

require 'vendor/autoload.php'; 

session_start(); 

$app = new \Slim\Slim(); 

$app->group('/js', function() use($app) { 
    $app->get('/', function() use($app) { 
     $app->flash('httpStatusCode', '403'); 
     $app->redirectTo('NotAuthorized'); 
    }); 
}); 

$app->get('/notAuthorized', function() use($app) { 
    echo 'You\'re here because you\'re Balrog!'; 
    echo 'Http Status Code: ' . $_SESSION['slim.flash']['httpStatusCode']; 
})->name('NotAuthorized'); 

$app->run(); 
+0

我沒想到!有沒有一種方法可以獲取http狀態碼並將其提供給頁面? – JustSteveKing 2015-02-12 21:39:48

+1

是的,您可以使用Flash消息。我編輯了我的答案。 – 2015-02-13 08:25:23

+0

對不起聽起來啞巴,我如何讓Flash消息實際工作?我嘗試了這個(我通過作曲家安裝了Slim-extra包),我嘗試從我的應用程序中的Session類開始,但是當我說'$ app-> flash('message','something')'它沒有'工作和抱怨我的使用情況? – JustSteveKing 2015-02-13 08:49:13