如何判断当前路由是否为根页面?Route::is()等方法失效问题
解决Laravel Blade中判断根页面路由的问题
别担心,这种情况其实挺常见的,大概率是根路由的定义或者你使用判断方法的姿势不对~我给你几个靠谱的替代方案:
方法1:直接判断请求路径(最稳妥)
不管你的根路由有没有命名,直接检查当前请求的路径是不是根路径/就行,在Blade里可以这么写:
@if(request()->is('/')) <!-- 这里是根页面的逻辑 --> @endif
这个方法最直接,不受路由命名的影响,绝对靠谱。
方法2:给根路由命名后用Route::is()
如果你的根路由没命名,那Route::is()和Route::currentRouteName()自然会失效。先去routes/web.php里给根路由加上名字:
// routes/web.php Route::get('/', function () { return view('welcome'); })->name('home'); // 加上这个命名
然后在Blade里就可以正常用Route::is()判断了:
@if(Route::is('home')) <!-- 根页面逻辑 --> @endif
或者用Route::currentRouteName()判断:
@if(Route::currentRouteName() === 'home') <!-- 根页面逻辑 --> @endif
方法3:通过路由URI判断
还可以直接获取当前路由的URI来对比,写法是:
@if(Route::current()->uri() === '/') <!-- 根页面逻辑 --> @endif
这个方法和第一种类似,只是从路由对象层面去获取路径。
另外补充一下:根页面肯定是有路由的,只是如果没给它命名的话,Route::currentRouteName()会返回null,这时候你如果直接判断它是否等于某个值自然会失效啦~
内容的提问来源于stack exchange,提问作者Exploit
相关产品推荐
相关产品推荐

