php - Laravel Lumen - 处理无效路线

标签 php laravel routes lumen

在 Lumen 中,如何处理无效路由(URL)?

流明的documentation说要放置 abort(404); 但我不知道该放在哪里。

如果我把它放在我的路由文件中,它会给我这个错误

Fatal error: Call to a member function send() on string in C:\....\vendor\laravel\lumen-framework\src\Application.php on line 408

这是抛出错误的代码:

protected function handleUncaughtException($e)
{
    $handler = $this->make('Illuminate\Contracts\Debug\ExceptionHandler');

    if ($e instanceof Error) {
        $e = new FatalThrowableError($e);
    }

    $handler->report($e);

    if ($this->runningInConsole()) {
        $handler->renderForConsole(new ConsoleOutput, $e);
    } else {
        $handler->render($this->make('request'), $e)->send(); <---line 408
    }
}

这是我的路线文件中的内容(刚刚添加了一条路线):

$app->group(['middleware' => 'stratus_auth', 'namespace' => 'App\Http\Controllers'], function ($app) {

     $app->get('/login', ['as' => 'login', 'middleware' => 'user_logged', 'uses' => 'LoginController@index']);
     ...
     ...
     ...
     $app->abort(404);
});

我怀疑我没有在路由文件中正确添加中止命令。

理想情况下,如果路由无效,我希望它重定向到 /ask URL。

感谢任何帮助。如果需要更多信息或代码,请告诉我。我会将其添加到问题中。

-----编辑:-----

如果没有 abort(),我会收到此错误,网址无效:

exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' in C:\Empire\LifeLearn\Repos\lifelearn_sofie_application\vendor\laravel\lumen-framework\src\Application.php:1264

这是 Application.php 中的第 1264 行

protected function handleDispatcherResponse($routeInfo)
{
    switch ($routeInfo[0]) {
        case Dispatcher::NOT_FOUND:
            throw new NotFoundHttpException;    <---ln 1264

        case Dispatcher::METHOD_NOT_ALLOWED:
            throw new MethodNotAllowedHttpException($routeInfo[1]);

        case Dispatcher::FOUND:
            return $this->handleFoundRoute($routeInfo);
    }
}

根据流明文档,这是处理错误的第二种方法,这似乎是在做的事情。

Secondly, you may manually throw an instance of Symfony\Component\HttpKernel\Exception\NotFoundHttpException.

但是如何显示 404 页面而不是页面上的错误呢?

最佳答案

我在这些链接的帮助下让它工作:

主要是第一个。 Bestmomo 的回答起到了作用。如果您想处理不同类型的错误 404、500 等,第二个链接很有用。

我不必向我的路线文件添加任何内容。 只需按照答案中的描述更改 app/Exceptions/Handler.php 文件即可。我很快就会在这里提供更多详细信息。

确保在 Handler.php 中添加 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

关于php - Laravel Lumen - 处理无效路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41368740/

相关文章:

security - 如何保护 cakePHP 中所有 Controller 中的所有管理操作

routes - 将 mDNS 查询从 WSL 子网重新路由到 Windows 主机子网

php - 关于如何将 JS onchange 事件传递给 PHP 的建议

javascript - 调整图表数据?

php - Laravel-5.1 将当前登录的用户注入(inject)我的 Controller

php - laravel 5.6批量插入json数据

laravel - 如何在监听器失败的作业之间设置延迟

javascript - JQuery/PHP 表单未提交

php - 如何在redis的laravel队列中获取所有待处理的作业?

php - 在这个 Symfony2 REST API 教程中,路由中定义的 'posts' 路径部分在哪里?