You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel异常处理中如何获取请求对应的控制器及方法?

在Laravel异常处理器中获取控制器及方法的实现方案

你可以通过请求实例的路由信息直接获取对应的控制器和方法,完全不需要在控制器中编写try-catch语句,具体实现如下:

代码修改示例

$this->renderable(function (NotFoundHttpException $e, $request) {
    if ($request->is('api/*')) {
        // 获取当前路由实例
        $route = $request->route();
        if ($route) {
            // 获取路由对应的控制器与方法,格式为「完整控制器类名@方法名」
            $action = $route->getActionName();
            // 拆分出控制器和方法
            [$controller, $method] = explode('@', $action);
            
            // 此处可根据需求使用$controller和$method做逻辑处理
            // 例如记录日志:logger()->error("异常触发于 {$controller}::{$method}");
        }
        
        return responder()->error($e->getMessage())->respond(404);
    }
});

补充说明

  • 如果路由使用闭包而非控制器方法,getActionName()会返回Closure,建议提前判断避免报错
  • $controller变量包含完整的命名空间类名,可直接用于反射等高级操作
  • 该方案兼容Laravel 5.5及以上版本,不同版本路由API差异极小,无需额外适配

内容的提问来源于stack exchange,提问作者Utku Dalmaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:10:26