如何在Laravel 4的@if语句(Blade)中获取当前URL?


269

我正在使用Laravel4。我想@if使用Laravel的Blade模板引擎在视图中的条件内访问当前URL,但我不知道该怎么做。

我知道可以使用类似方法来完成此操作,<?php echo URL::current(); ?>但是在@ifBlade语句中是不可能的。

有什么建议?


以下任何答案对您的问题有帮助吗?
N69S

Answers:


358

您可以使用:Request::url()获取当前URL,下面是一个示例:

@if(Request::url() === 'your url here')
    // code
@endif

Laravel提供了一种方法来找出URL是否与模式匹配

if (Request::is('admin/*'))
{
    // code
}

查看相关文档以获取不同的请求信息:http : //laravel.com/docs/requests#request-information


2
<li {{(Request :: is('admin / dashboard')?'class =“ active”':'')}} >>我尝试了这个,失败了:x
TransformBinary

4
在我来说,我使用的是启动/的URL,删除它会解决这个问题
华金属罗伯斯

@Andreyco如果我需要在首页以外的所有页面上都贴上横幅,请尝试尝试一下不起作用@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Yousef Altaf

4
我使用下一种格式:<li {!! (Request :: url()== url('/'))吗?'class =“ active”':''!!}>,因为{{some_code}}的格式使用字符串编码。
维克多

3
url() 现在返回一个构建器实例。必须使用url()->current()
Jeff Puckett

92

您也可以使用Route::current()->getName()来检查您的路线名称。

示例:routes.php

Route::get('test', ['as'=>'testing', function() {
    return View::make('test');
}]);

视图:

@if(Route::current()->getName() == 'testing')
    Hello This is testing
@endif

38
仅供参考,Route::is('testing')与相同Route::current()->getName() == 'testing'
Hkan 2015年

@Hkan两者都不一样, Route::is('testing')->>测试它不会工作Route::is('test')->>测试它会工作Route::current()->getName() == 'testing'别名和URL不同
Naveen Singh raghuvanshi

1
@Naveen nope,Route::is()检查路由名称,而不是路径。
Hkan

1
也是简写形式Route::currentRouteName()
Jeff Puckett

@Hkan是的,但是在使用您的URL中的参数(例如令牌)时,该方法将不起作用
Pathros,

66

也许您应该尝试这样:

<li class="{{ Request::is('admin/dashboard') ? 'active' : '' }}">Dashboard</li>

47

我会这样:

@if (Request::path() == '/view')
    // code
@endif

其中“ / view”是routes.php中的视图名称。


如何判断当前目录是否为home?我的意思是公开/。啊,我明白了,我只是输入=='public'
Pathros,2015年

1
如果主目录在route.php中为“ /”,则只需编写== '/')
Jucaman 2015年

您还将如何使其与参数一起使用?不仅是路线名称。
Pathros '17

您可以通过多种方式在路由名称后串联参数,具体取决于配置路由的方式。
Jucaman

我这样做是:Request::url()-比您得到完整的URL
Derk Jan Speelman

37

为了获得current urlblade视图中,可以使用以下,

<a href="{{url()->current()}}">Current Url</a>

因此,您可以使用以下代码进行比较,

@if (url()->current() == 'you url')
    //stuff you want to perform
@endif

2
如果还需要在刀片中获取查询字符串,则可以使用request()->getQueryString(),它与url()->current()删除字符串非常有用。
Spencer O'Reilly

25

这对Laravel 5.2中的 bootstrap active nav类有帮助

<li class="{{ Request::path() == '/' ? 'active' : '' }}"><a href="/">Home</a></li>
<li class="{{ Request::path() == 'about' ? 'active' : '' }}"><a href="/about">About</a></li>

1
谢谢,我知道代码,但是Google在5秒钟之内让我来到了这里。

同样,它与laravel 4.2一起工作,并且运行良好。谢谢
Vipertecpro

也正在Laravel 5.6上工作,谢谢...这只是使我免于为每个视图制作
导航

19

有点老了,但这在L5中有效:

<li class="{{ Request::is('mycategory/', '*') ? 'active' : ''}}">

这将捕获/ mycategory和/ mycategory / slug


1
我正在使用{{ Request::is('clientes/*') ? 'active' : ''}}
Alex Angelico

16

Laravel 5.4

全局功能

@if (request()->is('/'))
    <p>Is homepage</p>
@endif

如果您正在处理诸如domain.com/?page_id=1、domain.com/?page_id=2之类的查询字符串,那么这并不总是有效,因为这些URL也等于“ /”
Ryan S'S

我使用过request()->routeIs('...')
Lachezar Todorov

15

我个人不会尝试在视图内部抓取它。我对Laravel并不感到惊讶,但是我想您需要将路由发送到控制器,然后在控制器内使用诸如此类将变量(通过数组)传递到视图中$url = Request::url();

无论如何,一种方法。

编辑:实际上看上面的方法,可能是一个更好的方法。



9

最简单的方法是使用: Request::url();

但这是一个复杂的方法:

URL::to('/').'/'.Route::getCurrentRoute()->getPath();

9

有两种方法可以做到这一点:

<li{!!(Request::is('your_url')) ? ' class="active"' : '' !!}>

要么

<li @if(Request::is('your_url'))class="active"@endif>

8

您应该尝试这样:

<b class="{{ Request::is('admin/login') ? 'active' : '' }}">Login Account Details</b>

7

将此代码设置为对<li>需要HTMLBuilder在Laravel项目中使用库的每个+ 自动应用

<script type="text/javascript">
    $(document).ready(function(){
        $('.list-group a[href="https://stackoverflow.com/{{Request::path()}}"]').addClass('active');
    });
</script>

7

您可以使用以下代码获取当前网址:

echo url()->current();

echo url()->full();

我是从Laravel文档中得到的。


5

在Laravel中使用path编写if和else的另一种方法

 <p class="@if(Request::is('path/anotherPath/*')) className @else anotherClassName @endif" >
 </p>

希望能帮助到你


4

与其使用URL :: path()检查当前路径位置,不如考虑使用Route :: currentRouteName(),以防万一您更新路径,而无需浏览所有页面以进行更新再次输入路径名。



3
class="nav-link {{ \Route::current()->getName() == 'panel' ? 'active' : ''}}"


1

试试这个:

@if(collect(explode('/',\Illuminate\Http\Request::capture()->url()))->last() === 'yourURL')
    <li class="pull-right"><a class="intermitente"><i class="glyphicon glyphicon-alert"></i></a></li>
@endif

感谢您提供此代码段,它可能会提供一些有限的即时帮助。一个适当的解释,将大大提高其长期的价值通过展示为什么这是一个很好的解决了这个问题,并会使其与其他类似的问题,更有助于未来的读者。请编辑您的答案以添加一些解释,包括您所做的假设。
jhpratt GOFUNDME许可,

0

试试这个:

<li class="{{ Request::is('Dashboard') ? 'active' : '' }}">
    <a href="{{ url('/Dashboard') }}">
	<i class="fa fa-dashboard"></i> <span>Dashboard</span>
    </a>
</li>



0

最简单的方法是

<li class="{{ Request::is('contacts/*') ? 'active' : '' }}">Dashboard</li>

此colud捕获联系人/,联系人/创建,联系人/编辑...



-1

尝试这种方式:

<a href="{{ URL::to('/registration') }}">registration </a>

一些说明添加到你的答案
潘卡Makwana
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.