在 laravel 7 路由中找不到句柄模块
Posted
技术标签:
【中文标题】在 laravel 7 路由中找不到句柄模块【英文标题】:Handle module not found in laravel 7 routing 【发布时间】:2021-10-14 06:53:15 【问题描述】:假设我有一些
Route::get('/path/model', 'Controller@method');
在mysite.com/path/1
没有模型#1 的情况下,我得到 404,这是 Laravel 的默认行为
我想为特定路由组/特定路由
由于该路由存在,Route::fallback
或Route::any
不会在此处触发。
我知道 Laravel 8 中有一个 Route()->missing
方法,但我有 Laravel 7 并且无法更新。
另外,我以最好的方式搜索路线内的解决方案(web.php
)
有什么解决办法吗?提前谢谢
【问题讨论】:
【参考方案1】:您可以在App\Exceptions\Handler
类中全局处理异常。如果你真的和我的意思是真的想具体处理 ModelNotFoundException
仅针对某些路线,那么你可以做一些类似的事情
// Exception Handle class
public function render($request, Exception $exception)
if(
$request->is('*path/') && // or string match
$exception instanceof ModelNotFoundException
)
redirect()->to('where-ever');
如果您只想在ModelNotFoundException
发生时重定向用户,那么您可以这样做,
// Exception Handle class
public function render($request, Exception $exception)
if(
$exception instanceof ModelNotFoundException
)
redirect()->to('where-ever');
另一种方法是使用中间件并检查某个模型,如果它不存在,则重定向用户。取决于你想要做什么。你可以在这里找到更多信息
https://laravel.com/docs/8.x/middleware https://laravel.com/docs/8.x/errors#the-exception-handler
【讨论】:
以上是关于在 laravel 7 路由中找不到句柄模块的主要内容,如果未能解决你的问题,请参考以下文章
PHPUnit 3.7 在 Laravel 4.1 中找不到控制器类
在 laravel-echo-server 中找不到模块“node-v46-linux-x64/node_sqlite3.node”错误
在 Angular 7 中找不到模块“./auth.service”