Jak uzyskać bieżący adres URL wewnątrz instrukcji @if (Blade) w Laravel 4?

269

Używam Laravela 4. Chciałbym uzyskać dostęp do bieżącego adresu URL wewnątrz @ifwarunku w widoku za pomocą silnika szablonów Laravel's Blade, ale nie wiem, jak to zrobić.

Wiem, że można to zrobić za pomocą czegoś takiego, <?php echo URL::current(); ?>ale nie jest to możliwe w @ifinstrukcji typu blade.

Jakieś sugestie?

użytkownik2443854
źródło
czy jakaś odpowiedź poniżej pomogła w rozwiązaniu problemu?
N69S

Odpowiedzi:

358

Możesz użyć: Request::url()aby uzyskać bieżący adres URL, oto przykład:

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

Laravel oferuje metodę sprawdzania, czy adres URL pasuje do wzorca, czy nie

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

Sprawdź powiązaną dokumentację, aby uzyskać różne informacje dotyczące wniosku: http://laravel.com/docs/requests#request-information

Andreyco
źródło
2
<li {{(Request :: is ('admin / dashboard')? 'class = "active"': '')}}> próbowałem tego, nie powiodło się: x
TransformBinary
4
W moim przypadku użyłem początkowego / dla adresu URL, usunięcie go rozwiązałoby problem
Joaquín L. Robles
@Andreyco co zrobić, jeśli muszę umieścić baner na wszystkich stronach oprócz strony głównej, spróbuj to nie działa@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Yousef Altaf
4
Używam do tego następnego formatu: <li {!! (Request :: url () == url ('/'))? 'class = "active"': '' !!}>, ponieważ format z {{some_code}} używa kodowania ciągów.
Viktor,
3
url() teraz zwraca instancję konstruktora . trzeba użyćurl()->current()
Jeff Puckett
92

Możesz także użyć Route::current()->getName()do sprawdzenia nazwy trasy.

Przykład: trasy.php

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

Widok:

@if(Route::current()->getName() == 'testing')
    Hello This is testing
@endif
Naing Win
źródło
38
FYI, Route::is('testing')jest taki sam jak Route::current()->getName() == 'testing'.
Hkan
@Hkan Nie oba są różne, Route::is('testing')- >> testowanie nie zadziała Route::is('test')- >> test zadziała Route::current()->getName() == 'testing'alias i adres URL są różne
Naveen Singh raghuvanshi
1
@Naveen nie, Route::is()sprawdza nazwę trasy, a nie ścieżkę.
Hkan
1
również stenografiaRoute::currentRouteName()
Jeff Puckett
@Hkan Tak, ale to nie będzie działać podczas pracy z parametrami w adresie URL, na przykład, żetony ...
Patros
66

Może powinieneś spróbować:

<li class="{{ Request::is('admin/dashboard') ? 'active' : '' }}">Dashboard</li>
Dean Gite
źródło
47

Zrobiłbym to w ten sposób:

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

gdzie „/ view” to nazwa widoku w route.php.

Jucaman
źródło
Jak stwierdzić, czy obecny katalog jest w domu? Mam na myśli, publiczne /. Ach, rozumiem, =='public'
piszę
1
Jeśli katalog domowy to „/” w route.php, po prostu piszesz== '/')
Jucaman
Jak sprawiłbyś, żeby działał również z parametrami? Nie tylko nazwa trasy.
Pathros
Parametry można łączyć na wiele sposobów po nazwie trasy, w zależności od konfiguracji tras.
Jucaman
Robię to w ten sposób: Request::url()- niż otrzymasz pełny adres URL
Derk Jan Speelman
37

Aby dostać się current urlw bladewidoku można użyć następujących,

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

Aby porównać, używając następującego kodu,

@if (url()->current() == 'you url')
    //stuff you want to perform
@endif
Sagar Naliyapara
źródło
2
Jeśli chcesz również pobrać ciąg zapytania do bloku, możesz użyć tego, request()->getQueryString()co jest bardzo pomocne w połączeniu z url()->current()tym, że pozostawia ciąg zapytania.
Spencer O'Reilly,
25

Pomogło mi to w przypadku aktywnej klasy bootstrap Nav w 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>
Abduhafiz
źródło
1
Dziękuję, znałem kod, ale Google dostał mnie tutaj w 5 sekund haha.
Również to samo działa z laravel 4.2 i działa dobrze. Dziękuję
Vipertecpro,
Działa również na laravel 5.6, dzięki ... to właśnie uratowało mnie od podejmowania navs dla każdego widoku: D
LaravDev
19

Trochę stary, ale działa w L5:

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

Przechwytuje to zarówno / mycategory jak / / mycategory / slug

VineFreeman
źródło
1
Używam{{ Request::is('clientes/*') ? 'active' : ''}}
Alex Angelico
16

Laravel 5.4

Funkcje globalne

@if (request()->is('/'))
    <p>Is homepage</p>
@endif
Obrabować
źródło
To nie zawsze działa, jeśli masz do czynienia z ciągiem zapytania takim jak domain.com/?page_id=1, domain.com/?page_id=2, ponieważ te adresy URL również są równe „/”
Ryan S
Użyłemrequest()->routeIs('...')
Lachezar Todorov
15

Osobiście nie próbowałbym uchwycić go w widoku. Nie jestem niesamowity w Laravel, ale wyobrażam sobie, że musisz wysłać swoją trasę do kontrolera, a następnie w kontrolerze przekazać zmienną (za pomocą tablicy) do swojego widoku, używając czegoś podobnego $url = Request::url();.

Tak czy inaczej, jest to jeden ze sposobów.

EDYCJA: Właściwie spójrz na powyższą metodę, prawdopodobnie lepszy sposób.

Alias
źródło
11

Prosty pasek nawigacyjny z bootstrapem można wykonać jako:

    <li class="{{ Request::is('user/profile')? 'active': '' }}">
        <a href="{{ url('user/profile') }}">Profile </a>
    </li>
Alejandro Silva
źródło
9

Najprostszym sposobem jest użycie: Request::url();

Ale tutaj jest złożony sposób:

URL::to('/').'/'.Route::getCurrentRoute()->getPath();
shasi kanth
źródło
9

Można to zrobić na dwa sposoby:

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

lub

<li @if(Request::is('your_url'))class="active"@endif>
gines.nt
źródło
8

Powinieneś spróbować:

<b class="{{ Request::is('admin/login') ? 'active' : '' }}">Login Account Details</b>
przepraszam
źródło
7

Ustaw ten kod, aby był stosowany automatycznie dla każdego <li>+, którego potrzebujesz, aby użyć HTMLBuilderbiblioteki w swoim projekcie Laravel

<script type="text/javascript">
    $(document).ready(function(){
        $('.list-group a[href="https://stackoverflow.com/{{Request::path()}}"]').addClass('active');
    });
</script>
Ahmed Sayed Sk
źródło
7

Możesz użyć tego kodu, aby uzyskać bieżący adres URL:

echo url()->current();

echo url()->full();

Dostaję to z dokumentów Laravela.

aydin abedinia
źródło
5

Kolejny sposób na napisanie if i else w Laravel przy użyciu ścieżki

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

Mam nadzieję, że to pomoże

Krishnamoorthy Acharya
źródło
4

zamiast używać URL :: path () do sprawdzania aktualnej lokalizacji ścieżki, możesz rozważyć Route :: currentRouteName (), więc na wypadek, gdybyś zaktualizował swoją ścieżkę, nie musisz przeglądać wszystkich stron, aby zaktualizować nazwa ścieżki ponownie.

Kenneth Sunday
źródło
4

Do nazwanych tras używam:

@if(url()->current() == route('routeName')) class="current" @endif
Alex Pilyavskiy
źródło
3
class="nav-link {{ \Route::current()->getName() == 'panel' ? 'active' : ''}}"
mehran online
źródło
2
@if(request()->path()=='/path/another_path/*')
@endif
Alvin Davis Vadassery
źródło
Chociaż ten kod może odpowiedzieć na pytanie, zapewnienie dodatkowego kontekstu dotyczącego tego, dlaczego i / lub jak ten kod odpowiada na pytanie, poprawia jego długoterminową wartość.
rollstuhlfahrer
1

Spróbuj tego:

@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
C47
źródło
Dziękujemy za ten fragment kodu, który może zapewnić ograniczoną, natychmiastową pomoc. Właściwe wyjaśnienie byłoby znacznie poprawić swoją długoterminową wartość pokazując dlaczego jest to dobre rozwiązanie problemu, a byłoby bardziej użyteczne dla czytelników przyszłości z innymi, podobnymi pytaniami. Proszę edytować swoją odpowiedź dodać kilka wyjaśnień, w tym założeń już wykonanych.
jhpratt GOFUNDME RELICENSING
0

Spróbuj tego:

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

Rafiqul Islam
źródło
0

Jest wiele sposobów na osiągnięcie tego, z którego zawsze korzystam

 Request::url()
Ravindra Bhanderi
źródło
0

Najprostszy sposób to

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

Ta kolumna przechwytuje kontakty /, kontakty / tworzenie, kontakty / edycja ...

NaveenDA
źródło
0

W pliku Blade

@if (Request::is('companies'))
   Companies name 
@endif
Faridul Khan
źródło
-1

Wypróbuj w ten sposób:

<a href="{{ URL::to('/registration') }}">registration </a>
parmod
źródło
Dodaj wyjaśnienie do swojej odpowiedzi
Pankaj Makwana