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

345
我正在使用Laravel 4。我想在使用Laravel的Blade模板引擎时,在视图中的@if语句内访问当前URL,但我不知道如何做。
我知道可以使用类似于<?php echo URL::current(); ?>的方法来实现,但在@if Blade语句内部不可能这样做。
有什么建议吗?

以下任何答案是否有助于解决您的问题? - N69S
30个回答

15

个人而言,我不会尝试在视图中获取它。我对Laravel并不是很擅长,但我想你需要将你的路由发送到控制器,在控制器中通过数组将变量传递到视图,例如使用$url = Request::url();之类的内容。

至少有一种方法可以实现。

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


14

对我来说,这是最好的方法:

class="{{url()->current() == route('dashboard') ? 'bg-gray-900 text-white' : 'text-gray-300'}}"

12

使用Bootstrap可以创建一个简单的导航栏:

    <li class="{{ Request::is('user/profile')? 'active': '' }}">
        <a href="{{ url('user/profile') }}">Profile </a>
    </li>

10
最简单的方法是:
<li class="{{ Request::is('contacts/*') ? 'active' : '' }}">Dashboard</li>

这个可以捕捉到contacts/, contacts/create, contacts/edit...。

9
有两种方法可以做到这一点:
<li{!!(Request::is('your_url')) ? ' class="active"' : '' !!}>

或者

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

9
你应该尝试这个:
<b class="{{ Request::is('admin/login') ? 'active' : '' }}">Login Account Details</b>

9

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

但以下是一种复杂的方式:

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

8

对于命名路由,我使用:

@if(url()->current() == route('routeName')) class="current" @endif

7
将此代码设置为自动应用于每个<li>,并且您需要在Laravel项目中使用HTMLBuilder库。
<script type="text/javascript">
    $(document).ready(function(){
        $('.list-group a[href="/{{Request::path()}}"]').addClass('active');
    });
</script>

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接