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()-&gt;routeIs('categories') 要么 request()-&gt;routeIs(['categories', 'services'])

【讨论】:

以上是关于Laravel - 检查刀片上的路线的主要内容,如果未能解决你的问题,请参考以下文章

根据当前翻译的 Laravel 路线在刀片中添加“活动”类

如何检查 Laravel 刀片组件是不是已加载?

在刀片视图中显示路线的结果(Laravel)

Laravel 模板显示路线中的两个刀片模板

laravel 刀片 - 如何隐藏特定路线的 html 元素的显示

laravel 制作自己的刀片文件路径