超薄重定向工作;但也抛出一个例外

时间:2014-09-18 01:08:27

标签: slim

以下代码正确重定向;但也引发了一个例外:

$app->post("/foo", function () use ($app) {

    try {

        $app->redirect('/bar');

    } catch (Exception $e) {

        $app->log->debug("\n" . $e->getFile() . " (Line " . $e->getLine() . ") " . " - " . strftime('%c') . ": Exception (" . $e->getMessage() . ")");
        $app->log->debug("\n" . $e->getTraceAsString());

    }

});

这是来自Slim日志:

/{site root}/Slim/Slim.php (Line 1017)  - Wed Sep 17 17:51:33 2014: Exception ()

#0 /{site root}/Slim/Slim.php(1037): Slim\Slim->stop()
#1 /{site root}/Slim/Slim.php(1100): Slim\Slim->halt(302)
#2 /{site root}/index.php(328): Slim\Slim->redirect('/bar')
#3 [internal function]: {closure}()
#4 /{site root}/Slim/Route.php(462): call_user_func_array(Object(Closure), Array)
#5 /{site root}/Slim/Slim.php(1326): Slim\Route->dispatch()
#6 /{site root}/Slim/Middleware/Flash.php(85): Slim\Slim->call()
#7 /{site root}/Slim/Middleware/MethodOverride.php(92): Slim\Middleware\Flash->call()
#8 /{site root}/Slim/Middleware/PrettyExceptions.php(67): Slim\Middleware\MethodOverride->call()
#9 /{site root}/Slim/Slim.php(1271): Slim\Middleware\PrettyExceptions->call()
#10 /{site root}/index.php(689): Slim\Slim->run()
#11 {main}

我做错了什么?或者这是Slim中的一个错误?我无法提及这个特殊问题。

1 个答案:

答案 0 :(得分:7)

Slim使用路由助手的例外,重定向就是其中之一。请参阅文档中的“Route Helpers”部分:

  

请注意以下应用程序实例方法助手   halt()pass()redirect()stop()都是使用   例外。每个人都会抛出一个\Slim\Exception\Stop或   \Slim\Exception\Pass例外......   如果意外,这种行为可能会令人惊讶。

有代码示例显示您正在经历的行为以及如何避免它。诀窍是重定向catch块中的错误并在try / catch块之后重定向成功。