当 Route::fallback 存在时检查路由是不是存在
Posted
技术标签:
【中文标题】当 Route::fallback 存在时检查路由是不是存在【英文标题】:Check if route exists when Route::fallback present当 Route::fallback 存在时检查路由是否存在 【发布时间】:2021-09-24 11:18:35 【问题描述】:我正在尝试确定在 Laravel 的 Route::fallback
内是否存在给定路线。下面的 sn-p 应该抛出一个NotFoundHttpException
异常,但是我怀疑这不是由于存在回退(即,路由确实作为回退存在)。
Route::fallback(function () use ($routes)
try
$next = Request::create('does-not-exist');
Route::getRoutes()->match($next);
catch (NotFoundHttpException)
// Should end up here
);
对于某些情况:我希望能够点击一条确实存在的路线,然后显示另一条路线的内容。第二条路线可能最终实际上并不存在,我希望能够抓住它。
TIA
【问题讨论】:
可以在App\Exceptions
处理404异常
我知道这一点,但用户提出的请求将是合法路线,然后显示来自另一条路线的内容。没有机会处理 404 异常。
【参考方案1】:
Route::getRoutes()->match($next);
的结果将是一个Illuminate\Routing\Route
对象。您可以检查此对象以获取 isFallback
property 的值。
Route::fallback(function () use ($routes)
$next = Request::create('does-not-exist');
$route = Route::getRoutes()->match($next);
if ($route->isFallback)
// do your thing
);
【讨论】:
以上是关于当 Route::fallback 存在时检查路由是不是存在的主要内容,如果未能解决你的问题,请参考以下文章