Slim PHP 自定义 http 响应页面
Slim PHP custom http response pages
好的,我已经阅读了 Slim PHP 上的文档并阅读了相当多的教程,并且正在顺利进行应用程序。但是,我正在尝试处理诸如自定义 HTTP 响应代码之类的事情。我已经设法获得以下内容:
$app->notfound('template.file', array(
'data' => 'passed'
));
这似乎工作得很好(因为它应该 是 一个直接在 Slim 中的方法),但不是我试图控制诸如 403
回复。我已经像往常一样控制了不允许使用 Apache,但是我想知道是否有一种方法可以使用 Slim 来提供自定义 Not Permitted 页面?还是因为我在Apache级别屏蔽了,Slim会不会察觉不到?
我读到我可以手动暂停某些路线?这是我应该做的吗?例如,我不想让别人访问我的 JS 目录,所以:
$app->group('/js', function () use($app) {
$app->get('/', functin () use($app) {
$app->halt(403, "You shall not pass!");
});
});
我分组的原因是因为我想访问我的实际脚本,而不是目录浏览。
有人遇到过这个吗?你有什么建议?还是我完全过度思考了一些简单的事情......
您可以简单地将用户重定向到您打印自定义模板的另一条路线。示例:
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();
好的,我已经阅读了 Slim PHP 上的文档并阅读了相当多的教程,并且正在顺利进行应用程序。但是,我正在尝试处理诸如自定义 HTTP 响应代码之类的事情。我已经设法获得以下内容:
$app->notfound('template.file', array(
'data' => 'passed'
));
这似乎工作得很好(因为它应该 是 一个直接在 Slim 中的方法),但不是我试图控制诸如 403
回复。我已经像往常一样控制了不允许使用 Apache,但是我想知道是否有一种方法可以使用 Slim 来提供自定义 Not Permitted 页面?还是因为我在Apache级别屏蔽了,Slim会不会察觉不到?
我读到我可以手动暂停某些路线?这是我应该做的吗?例如,我不想让别人访问我的 JS 目录,所以:
$app->group('/js', function () use($app) {
$app->get('/', functin () use($app) {
$app->halt(403, "You shall not pass!");
});
});
我分组的原因是因为我想访问我的实际脚本,而不是目录浏览。
有人遇到过这个吗?你有什么建议?还是我完全过度思考了一些简单的事情......
您可以简单地将用户重定向到您打印自定义模板的另一条路线。示例:
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();