Laravel - 检查刀片上的路线
Posted
技术标签:
【中文标题】Laravel - 检查刀片上的路线【英文标题】:Laravel - check if routes on blade 【发布时间】:2020-05-19 17:23:39 【问题描述】:我需要检查2条路线,如果有一条,添加一些内容
@if (Route::current()->uri() != '/' || Route::current()->uri() != 'login')<div>add some content some contnt </div> @endif
我尝试过使用“||”和“或”和“或”。我也试过Request::path()
,它只在检查1条路线时有效
@if (Route::current()->uri() != '/') <div>add some content some contnt </div> @endif
如果我尝试 2 条路线,它似乎不起作用
【问题讨论】:
if 语句对我来说看起来不错。应该管用。请注意,您正在检查是否不是 root 或未登录。当您发现地址栏中显示的 URL 不起作用时,它是什么? 【参考方案1】:您需要使您的条件正确,因为您在 url 和字符串之间进行比较。 请试试这个:
URL::current() != url('/')
【讨论】:
【参考方案2】:我会改用路由名称和in_array
...
在你的 web.php 中
Route::get('/', ...)->name('home');
Route::get('/login', ...)->name('login');
然后你可以做这样的事情
in_array(Route::currentRouteName(), ['home', 'login'])
【讨论】:
【参考方案3】:尝试改用路由名称。在你的 web.php 文件中放这个:
Route::get('/')->name('home');
Route::get('/login')->name('login');
然后将您的 if 条件更改为:
@if (Route::currentRouteName() != 'home' || Route::currentRouteName() != 'login')
<div>add some content some contnt </div>
@endif
【讨论】:
【参考方案4】:您可以使用内置方法来检查路由名称或模式。
见Route::is()
或Route::currentRouteNamed()
例如:
Route::get('users', 'Controller..')->name('users.index');
Route::get('users/id', 'Controller..')->name('users.show');
假设您在以下路径中:users/1
@if(Route::is('users.show') )
// true
@endif
@if(Route::is('users') )
// false
@endif
@if(Route::is('users.*') )
// true
@endif
所以在你的例子中尝试@if(Route::is('home') or Route::is('login'))..@endif
【讨论】:
【参考方案5】:你也可以这样做:
request()->routeIs('categories')
要么
request()->routeIs(['categories', 'services'])
【讨论】:
以上是关于Laravel - 检查刀片上的路线的主要内容,如果未能解决你的问题,请参考以下文章