Come ottenere l'URL corrente all'interno dell'istruzione @if (Blade) in Laravel 4?


269

Sto usando Laravel 4. Vorrei accedere all'URL corrente all'interno di una @ifcondizione in una vista usando il motore di template di Laravel's Blade ma non so come farlo.

So che può essere fatto usando qualcosa di simile <?php echo URL::current(); ?>ma non è possibile all'interno di un'istruzione @ifblade.

Eventuali suggerimenti?


qualche risposta di seguito ha aiutato con il tuo problema?
N69S,

Risposte:


358

Puoi usare: Request::url()per ottenere l'URL corrente, ecco un esempio:

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

Laravel offre un metodo per scoprire se l'URL corrisponde o meno a un pattern

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

Consultare la documentazione relativa per ottenere diverse informazioni sulla richiesta: http://laravel.com/docs/requests#request-information


2
<li {{(Request :: is ('admin / dashboard')? 'class = "active"': '')}}> ho provato questo, fallito: x
TransformBinary

4
Nel mio caso stavo usando un inizio / per l'URL, rimuoverlo per risolvere il problema
Joaquín L. Robles

@Andreyco e se avessi bisogno di mettere uno striscione su tutte le pagine tranne la home page provate che non funziona@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Yousef Altaf

4
Per questo utilizzo il formato successivo: <li {!! (Richiesta :: url () == url ('/'))? 'class = "active"': '' !!}>, poiché il formato con {{some_code}} utilizza la codifica stringa.
Viktor,

3
url() ora restituisce un'istanza del builder . deve usareurl()->current()
Jeff Puckett il

92

Puoi anche usare Route::current()->getName()per controllare il nome del tuo percorso.

Esempio: route.php

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

Visualizza:

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

38
Cordiali saluti, Route::is('testing')è lo stesso di Route::current()->getName() == 'testing'.
Hkan,

@Hkan No entrambi sono diversi, Route::is('testing')- >> test non funzionerà Route::is('test')- >> test funzionerà Route::current()->getName() == 'testing'alias e url sono diversi
Naveen Singh raghuvanshi

1
@Naveen no, Route::is()controlla il nome del percorso, non il percorso.
Hkan,

1
anche stenografiaRoute::currentRouteName()
Jeff Puckett

@Hkan Sì, ma non funzionerebbe quando si lavora con i parametri nel proprio URL, ad esempio token ...
Pathros

66

Forse dovresti provare questo:

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

47

Lo farei così:

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

dove '/ view' è il nome della vista in route.php.


Come sapere se l'attuale dir è a casa? Voglio dire, pubblico /. Ahh, ho capito, =='public'
sto

1
Se home dir è '/' in route.php, scrivi semplicemente== '/')
Jucaman

Come lo faresti funzionare anche con i parametri? Non solo il nome del percorso.
Pathros,

È possibile concatenare i parametri in molti modi dopo il nome del percorso, a seconda di come sono stati configurati i percorsi.
Jucaman,

Lo faccio in questo modo: Request::url()- di quello che ottieni l'URL completo
Derk Jan Speelman,

37

Per arrivare current urlin bladevista è possibile utilizzare in seguito,

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

Quindi, come puoi confrontare usando il seguente codice,

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

2
Se è necessario ottenere anche la stringa di query nel pannello, è possibile utilizzare ciò request()->getQueryString()che è molto utile insieme a url()->current()quello che lascia fuori la stringa di query.
Spencer O'Reilly,

25

Questo mi è stato d'aiuto per la classe nav attiva bootstrap 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>

1
Grazie, conoscevo il codice ma Google mi ha portato qui in 5 secondi ahah.

Anche questo funziona con laravel 4.2 e funziona bene. Grazie
Vipertecpro,

Anche lavorando su Laravel 5.6, grazie ... questo mi ha appena salvato dal creare nav per ogni vista: D
LaravDev

19

Un po 'vecchio ma questo funziona in L5:

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

Questo cattura sia / mycategory che / mycategory / slug


1
Sto usando{{ Request::is('clientes/*') ? 'active' : ''}}
Alex Angelico

16

Laravel 5.4

Funzioni globali

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

Questo non funziona sempre se hai a che fare con una stringa di query come domain.com/?page_id=1, domain.com/?page_id=2, poiché anche questi URL sono uguali a "/"
Ryan S

Ho usatorequest()->routeIs('...')
Lachezar Todorov il

15

Personalmente non proverei ad afferrarlo all'interno della vista. Non sono sorprendente in Laravel, ma immagino che avresti bisogno di inviare il tuo percorso a un controller, e quindi all'interno del controller, passare la variabile (tramite un array) nella tua vista, usando qualcosa di simile $url = Request::url();.

Un modo per farlo comunque.

EDIT: Guarda il metodo sopra, probabilmente un modo migliore.


11

Una semplice barra di navigazione con bootstrap può essere eseguita come:

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

9

Il modo più semplice è usare: Request::url();

Ma ecco un modo complesso:

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

9

Esistono due modi per farlo:

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

o

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

8

Dovresti provare questo:

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

7

Imposta questo codice per applicarlo automaticamente per ogni <li>+ che devi usare la HTMLBuilderlibreria nel tuo progetto Laravel

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

7

Puoi utilizzare questo codice per ottenere l'URL corrente:

echo url()->current();

echo url()->full();

Lo capisco dai documenti di Laravel.


5

Un altro modo per scrivere se e altrimenti in Laravel usando path

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

Spero che sia d'aiuto


4

invece di utilizzare l' URL :: path () per verificare la posizione del percorso corrente, potresti prendere in considerazione Route :: currentRouteName () quindi, nel caso in cui aggiorni il percorso, non è necessario esplorare tutte le pagine per aggiornare il nome del percorso di nuovo.


4

Per i percorsi con nome, utilizzo:

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

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

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

Mentre questo codice può rispondere alla domanda, fornendo un contesto aggiuntivo riguardo al perché e / o al modo in cui questo codice risponde alla domanda migliora il suo valore a lungo termine.
rollstuhlfahrer,

2

Prova questo:

@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

Grazie per questo frammento di codice, che potrebbe fornire un aiuto limitato e immediato. Una spiegazione adeguata migliorerebbe notevolmente il suo valore a lungo termine mostrando perché questa è una buona soluzione al problema e lo renderebbe più utile ai futuri lettori con altre domande simili. Si prega di modificare la risposta di aggiungere qualche spiegazione, tra le ipotesi che hai fatto.
jhpratt GOFUNDME RELICENSING,

1

Prova questo:

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



1

Il modo più semplice è

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

Questo colud cattura i contatti /, contatti / crea, contatti / modifica ...



-1

Prova in questo modo:

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

Aggiungi una spiegazione alla tua risposta
Pankaj Makwana,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.