webman icon indicating copy to clipboard operation
webman copied to clipboard

希望有更多关于路由的事件

Open l12ab opened this issue 4 years ago • 1 comments

有些需求,需要在路由分发之前完成,但是目前webman似乎还做不到。 尝试了一下中间件,但是中间件都是在路由分发之后完成的,不符合我的需求。

比如,对于找不到的controller或者action,我希望自己处理一些逻辑并返回自定义错误

l12ab avatar Jan 12 '21 04:01 l12ab

当时设计时有考虑不管什么请求都先执行全局中间键,再走路由流程,但是大部分开发者写中间键时可能不会考虑到路由不存在404的情况,这就可能导致bug。

所以webman里先执行路由,如果路由存在则执行中间键,不存在则尝试执行路由设置的fallback,如果没有设置路由的fallback,则返回404。

所以对于找不到的controller或者action这种需要自定义处理的情况,设置Route::fallback();来解决就好。 例如在config/route.php里设置:

Route::fallback(function($request){
    return response('<h1>自定义404</h1>', 404);
});

walkor avatar Jan 12 '21 07:01 walkor