如何在 Laravel 5.6 中检查 @if 语句中的当前 URL

Posted

技术标签:

【中文标题】如何在 Laravel 5.6 中检查 @if 语句中的当前 URL【英文标题】:How to check current URL inside @if statement in Laravel 5.6 【发布时间】:2018-12-09 11:49:16 【问题描述】:

我正在使用 laravel 5.6 并试图检查我当前的 URL 是否在 @if 语句中。

我看到其他一些帖子说它可以像这样@if(Request:url() === 'url to check') 完成。但是我看到的那个特别的帖子是 Laravel 4 的解决方案。任何人都知道如何获取当前的 url 并放入 Laravel 5.6 的 @if 语句中吗?

示例

@if(Request::url() === '/dashboard/attendance/report')
      <a href="#" class="btn btn-danger" target="_blank">Button</a>
@endif

【问题讨论】:

【参考方案1】:

我会通过以下方式解决这个问题。

@if(str_contains(url()->current(), '/dashboard/attendance/report'))
      <a href="#" class="btn btn-danger" target="_blank">Button</a>
@endif

str_contains() 函数检查字符串(参数#1)是否包含第二个字符串。我更喜欢这个函数,因为 Laravel url() 函数返回一个完整的 url,而你想检查 url 是否包含某个路径。

url()-&gt;current() 的文档可以在这里找到: https://laravel.com/docs/5.6/urls#accessing-the-current-url

编辑: 一种确保/dashboard/attendance/report 位于当前网址末尾的方法,您可以使用以下内容:

@if(substr(url()->current(), -1) == '/dashboard/attendance/report'))
      <a href="#" class="btn btn-danger" target="_blank">Button</a>
@endif

【讨论】:

【参考方案2】:

您不应该检查 URL,而应该检查路由。我会这样做。

@if (request()->is('admin/myRoute'))
[do stuff]
@endif

【讨论】:

您将如何检查当前路线是否与路线相关。即 route()->startsWith('myRoute/')

以上是关于如何在 Laravel 5.6 中检查 @if 语句中的当前 URL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 框架中降级? (5.6 至 5.5)

如何在 laravel 5.6 中下载 pdf 文件?

如何在刀片文件 laravel 5.6 中获取当前路由名称

如何在刀片视图 laravel 5.6 中访问定义的关系

Laravel-5.6'LIKE'在哪里选择

如何在 laravel 5.6 的一个刀片文件中使用不同的形式