ChatGPT解决这个技术问题 Extra ChatGPT

How to Get the Current URL Inside @if Statement (Blade) in Laravel 4?

I am using Laravel 4. I would like to access the current URL inside an @if condition in a view using the Laravel's Blade templating engine but I don't know how to do it.

I know that it can be done using something like <?php echo URL::current(); ?> but It's not possible inside an @if blade statement.

Any suggestions?

did any answer below help with your issue ?

R
Rubens Mariuzzo

You can use: Request::url() to obtain the current URL, here is an example:

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

Laravel offers a method to find out, whether the URL matches a pattern or not

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

Check the related documentation to obtain different request information: http://laravel.com/docs/requests#request-information


i tried this, failed :x
In my case I was using a starting / for the URL, removing it would solve the issue
I use the next format for it: , because the format with {{ some_code }} use string encoding.
url() now returns a builder instance. must use url()->current()
Although I upvoted this a long time ago, today I was having trouble with it on Laravel 5.7 and eventually got this to work instead: @if (Request::path() != 'login'). Notice the lack of slash before "login", too.
N
Naing Win

You can also use Route::current()->getName() to check your route name.

Example: routes.php

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

View:

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

FYI, Route::is('testing') is the same as Route::current()->getName() == 'testing'.
@Hkan No both are different, Route::is('testing') ->> testing it will not work Route::is('test') ->> test it will work Route::current()->getName() == 'testing' alias and url are differents
@Naveen nope, Route::is() checks for the route name, not the path.
also shorthand Route::currentRouteName()
@Hkan Yeah, but that wouldn't work when working with parameters in your URL, for example, tokens ...
D
Dean Gite

Maybe you should try this:

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

Z
Zoe stands with Ukraine

To get current url in blade view you can use following,

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

So as you can compare using following code,

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

If you need to get the query string in the blade as well then you can use request()->getQueryString() which is very helpful in conjunction with url()->current() as that leaves off the query string.
``` @if(url()->current() == '/admin/search-result' ``` I used this code but it doesn't work?
@MahdiSafari in that case just write @if(Request::is('admin/search-result'))
This worked very nicely. Thanks
J
Jucaman

I'd do it this way:

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

where '/view' is view name in routes.php.


How to tell if the current dir is home? I mean, public/. Ahh, i got it, i just type =='public'
If home dir is '/' in route.php, you just write == '/')
How would you make it work with the parameters as well? Not only the route name.
You can concatenate parameters in many ways after route name, depending on how you configured your routes.
I do it like this: Request::url() - than you get the complete URL
A
Abduhafiz

This is helped to me for bootstrap active nav class in Laravel 5.2:

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

Thank you, I knew the code but Google got me here in 5 seconds haha.
Also this same working with laravel 4.2 and it's working good. Thank you
Also working on Laravel 5.6, thanks... this just saved me from making navs for each view :D
Z
Zoe stands with Ukraine

A little old but this works in L5:

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

This captures both /mycategory and /mycategory/slug


I'm using {{ Request::is('clientes/*') ? 'active' : ''}}
R
Rob

Laravel 5.4

Global functions

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

This does not always work if you're dealing with query string like so domain.com/?page_id=1, domain.com/?page_id=2, as those URLs also equal as "/"
I used request()->routeIs('...')
A
Alias

I personally wouldn't try grabbing it inside of the view. I'm not amazing at Laravel, but I would imagine you'd need to send your route to a controller, and then within the controller, pass the variable (via an array) into your view, using something like $url = Request::url();.

One way of doing it anyway.

EDIT: Actually look at the method above, probably a better way.


Z
Zoe stands with Ukraine

You can use this code to get current URL:

echo url()->current();

echo url()->full();

I get this from Laravel documents.


A
Alejandro Silva

A simple navbar with bootstrap can be done as:

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

S
Slowwie

For me this works best:

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

S
Siva

You will get the url by using the below code.

For Example your URL like https//www.example.com/testurl?test

echo url()->current();
Result : https//www.example.com/testurl

echo url()->full();
Result: https//www.example.com/testurl?test

s
shasi kanth

The simplest way is to use: Request::url();

But here is a complex way:

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

g
gines.nt

There are two ways to do that:

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

or

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

p
pardeep

You should try this:

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

N
Naveen DA

The simplest way is

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

This colud capture the contacts/, contacts/create, contacts/edit...


A
Ahmed Sayed Sk

Set this code to applied automatically for each <li> + you need to using HTMLBuilder library in your Laravel project

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

A
Alex Pilyavskiy

For named routes, I use:

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

F
Faridul Khan

In Blade file

@if (Request::is('companies'))
   Companies name 
@endif

K
Krishnamoorthy Acharya

Another way to write if and else in Laravel using path

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

Hope it helps


K
Kenneth Sunday

instead of using the URL::path() to check your current path location, you may want to consider the Route::currentRouteName() so just in case you update your path, you don't need to explore all your pages to update the path name again.


Z
Zoe stands with Ukraine
class="nav-link {{ \Route::current()->getName() == 'panel' ? 'active' : ''}}"

P
Pang
@if(request()->path()=='/path/another_path/*')
@endif

While this code may answer the question, providing additional context regarding why and/or how this code answers the question improves its long-term value.
Z
Zoe stands with Ukraine

Try this:

@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

Thank you for this code snippet, which might provide some limited, immediate help. A proper explanation would greatly improve its long-term value by showing why this is a good solution to the problem, and would make it more useful to future readers with other, similar questions. Please edit your answer to add some explanation, including the assumptions you've made.
R
Rafiqul Islam

Try This:

  • Dashboard

  • Z
    Zoe stands with Ukraine

    There are many way to achieve, one from them I use always

     Request::url()
    

    J
    JDamour

    For Laravel 5.5 +

    <a class="{{ Request::segment(1) == 'activities'  ? 'is-active' : ''}}" href="#">
                                  <span class="icon">
                                    <i class="fas fa-list-ol"></i>
                                  </span>
                                Activities
                            </a>
    

    m
    msanford

    Try this way :

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

    Add some explanation to your answer