Wie erhalte ich die aktuelle URL in @if Statement (Blade) in Laravel 4?

269

Ich verwende Laravel 4. Ich möchte @ifmit der Blade-Template-Engine von Laravel auf die aktuelle URL in einer Bedingung in einer Ansicht zugreifen, weiß aber nicht, wie das geht.

Ich weiß, dass es mit so etwas gemacht werden kann, <?php echo URL::current(); ?>aber es ist innerhalb einer @ifBlade-Anweisung nicht möglich .

Irgendwelche Vorschläge?

user2443854
quelle
Hat eine der folgenden Antworten bei Ihrem Problem geholfen?
N69S

Antworten:

358

Sie können Folgendes verwenden Request::url(), um die aktuelle URL abzurufen. Hier ein Beispiel:

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

Laravel bietet eine Methode, um herauszufinden, ob die URL mit einem Muster übereinstimmt oder nicht

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

Überprüfen Sie die zugehörige Dokumentation, um andere Anforderungsinformationen zu erhalten: http://laravel.com/docs/requests#request-information

Andreyco
quelle
2
<li {{(Request :: is ('admin / dashboard')? 'class = "active"': '')}}> Ich habe es versucht, ist fehlgeschlagen: x
TransformBinary
4
In meinem Fall habe ich ein Start / für die URL verwendet, das Entfernen würde das Problem lösen
Joaquín L. Robles
@Andreyco was ist, wenn ich ein Banner auf allen Seiten außer der Homepage setzen muss, versuchen Sie, dass dies nicht funktioniert@if(Request::url()!=='/') <div class="bannerImage">{{ HTML::image('images/fullimage3.jpg') }}</div> @endif
Yousef Altaf
4
Ich benutze das nächste Format dafür: <li {!! (Request :: url () == url ('/'))? 'class = "active"': '' !!}>, da das Format mit {{some_code}} die Zeichenfolgencodierung verwendet.
Viktor
3
url() Gibt jetzt eine Builder-Instanz zurück . muss verwendenurl()->current()
Jeff Puckett
92

Sie können auch Route::current()->getName()Ihren Routennamen überprüfen.

Beispiel: route.php

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

Aussicht:

@if(Route::current()->getName() == 'testing')
    Hello This is testing
@endif
Naing Win
quelle
38
Zu Ihrer Information, Route::is('testing')ist das gleiche wie Route::current()->getName() == 'testing'.
Hkan
@Hkan Nein, beide sind unterschiedlich, Route::is('testing')- >> Testen wird nicht funktionieren Route::is('test')- >> Testen, es wird funktionieren Route::current()->getName() == 'testing'Alias ​​und URL sind unterschiedlich
Naveen Singh Raghuvanshi
1
@Naveen nein, sucht nach dem Routennamen, Route::is()nicht nach dem Pfad.
Hkan
1
auch KurzschriftRoute::currentRouteName()
Jeff Puckett
@Hkan Ja, aber das würde nicht funktionieren, wenn Sie mit Parametern in Ihrer URL arbeiten, zum Beispiel Token ...
Pathros
66

Vielleicht sollten Sie dies versuchen:

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

Ich würde es so machen:

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

Dabei ist '/ view' der Name der Ansicht in route.php.

Jucaman
quelle
Wie kann man feststellen, ob das aktuelle Verzeichnis zu Hause ist? Ich meine, öffentlich /. Ahh, ich habe es verstanden, ich =='public'
tippe
1
Wenn home dir '/' in route.php ist, schreibst du einfach== '/')
Jucaman
Wie würden Sie es auch mit den Parametern funktionieren lassen? Nicht nur der Routenname.
Pathros
Sie können Parameter nach dem Routennamen auf viele Arten verketten, je nachdem, wie Sie Ihre Routen konfiguriert haben.
Jucaman
Ich mache es so: Request::url()- als Sie die vollständige URL erhalten
Derk Jan Speelman
37

Um current urlin die bladeAnsicht zu gelangen , können Sie Folgendes verwenden:

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

So wie Sie mit folgendem Code vergleichen können,

@if (url()->current() == 'you url')
    //stuff you want to perform
@endif
Sagar Naliyapara
quelle
2
Wenn Sie die Abfragezeichenfolge auch im Blade abrufen müssen, können Sie diese verwenden, request()->getQueryString()was in Verbindung mit sehr hilfreich ist, url()->current()da dadurch die Abfragezeichenfolge weggelassen wird.
Spencer O'Reilly
25

Dies wird mir für die Bootstrap Active Nav-Klasse in Laravel 5.2 geholfen :

<li class="{{ Request::path() == '/' ? 'active' : '' }}"><a href="/">Home</a></li>
<li class="{{ Request::path() == 'about' ? 'active' : '' }}"><a href="/about">About</a></li>
Abduhafiz
quelle
1
Vielen Dank, ich kannte den Code, aber Google hat mich in 5 Sekunden hierher gebracht, haha.
Auch das gleiche funktioniert mit Laravel 4.2 und es funktioniert gut. Vielen Dank
Vipertecpro
Ich arbeite auch an Laravel 5.6, danke ... das hat mich nur davon abgehalten, Navis für jede Ansicht zu
erstellen
19

Ein bisschen alt, aber das funktioniert in L5:

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

Dies erfasst sowohl / mycategory als auch / mycategory / slug

VineFreeman
quelle
1
Ich benutze{{ Request::is('clientes/*') ? 'active' : ''}}
Alex Angelico
15

Ich persönlich würde nicht versuchen, es in die Ansicht zu greifen. Ich bin bei Laravel nicht besonders beeindruckend, aber ich würde mir vorstellen, dass Sie Ihre Route an einen Controller senden und dann innerhalb des Controllers die Variable (über ein Array) mit so etwas wie in Ihre Ansicht übergeben müssen $url = Request::url();.

Eine Möglichkeit, es trotzdem zu tun.

EDIT: Schauen Sie sich die obige Methode an, wahrscheinlich einen besseren Weg.

Alias
quelle
15

Laravel 5.4

Globale Funktionen

@if (request()->is('/'))
    <p>Is homepage</p>
@endif
rauben
quelle
Dies funktioniert nicht immer, wenn Sie mit Abfragezeichenfolgen wie domain.com/?page_id=1, domain.com/?page_id=2 arbeiten, da diese URLs auch gleich "/" sind
Ryan S
Ich benutzterequest()->routeIs('...')
Lachezar Todorov
11

Eine einfache Navigationsleiste mit Bootstrap kann wie folgt ausgeführt werden:

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

Der einfachste Weg ist zu verwenden: Request::url();

Aber hier ist ein komplexer Weg:

URL::to('/').'/'.Route::getCurrentRoute()->getPath();
Shasi Kanth
quelle
9

Dafür gibt es zwei Möglichkeiten:

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

oder

<li @if(Request::is('your_url'))class="active"@endif>
gines.nt
quelle
8

Sie sollten dies versuchen:

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

Stellen Sie diesen Code so ein, dass er automatisch für jedes <li>+ angewendet wird, das Sie zur Verwendung der HTMLBuilderBibliothek in Ihrem Laravel-Projekt benötigen

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

Mit diesem Code können Sie die aktuelle URL abrufen:

echo url()->current();

echo url()->full();

Ich bekomme das aus Laravel-Dokumenten.

Aydin Abedinia
quelle
5

Eine andere Möglichkeit, if und else in Laravel mithilfe von path zu schreiben

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

Ich hoffe es hilft

Krishnamoorthy Acharya
quelle
4

Anstatt die URL :: path () zu verwenden, um Ihren aktuellen Pfad zu überprüfen, sollten Sie die Route :: currentRouteName () berücksichtigen. Nur für den Fall, dass Sie Ihren Pfad aktualisieren, müssen Sie nicht alle Seiten durchsuchen , um sie zu aktualisieren den Pfadnamen noch einmal.

Kenneth Sonntag
quelle
4

Für benannte Routen verwende ich:

@if(url()->current() == route('routeName')) class="current" @endif
Alex Pilyavskiy
quelle
3
class="nav-link {{ \Route::current()->getName() == 'panel' ? 'active' : ''}}"
mehran online
quelle
2
@if(request()->path()=='/path/another_path/*')
@endif
Alvin Davis Vadassery
quelle
Während dieser Code die Frage möglicherweise beantwortet, verbessert die Bereitstellung eines zusätzlichen Kontexts darüber, warum und / oder wie dieser Code die Frage beantwortet, ihren langfristigen Wert.
Rollstuhlfahrer
1

Versuche dies:

@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
quelle
Vielen Dank für dieses Code-Snippet, das möglicherweise nur begrenzte und sofortige Hilfe bietet. Eine richtige Erklärung würde ihren langfristigen Wert erheblich verbessern, indem sie zeigt, warum dies eine gute Lösung für das Problem ist, und es für zukünftige Leser mit anderen, ähnlichen Fragen nützlicher machen. Bitte bearbeiten Sie Ihre Antwort, um eine Erklärung hinzuzufügen, einschließlich der von Ihnen getroffenen Annahmen.
Jhpratt GOFUNDME RELICENSING
0

Versuche dies:

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

Rafiqul Islam
quelle
0

Es gibt viele Möglichkeiten, eine davon zu erreichen, die ich immer benutze

 Request::url()
Ravindra Bhanderi
quelle
0

Der einfachste Weg ist

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

Diese Spalte erfasst die Kontakte /, Kontakte / erstellen, Kontakte / bearbeiten ...

NaveenDA
quelle
0

In der Blade-Datei

@if (Request::is('companies'))
   Companies name 
@endif
Faridul Khan
quelle
-1

Versuchen Sie Folgendes:

<a href="{{ URL::to('/registration') }}">registration </a>
Parmod
quelle
Fügen Sie einige Erklärung zu Ihrer Antwort hinzu
Pankaj Makwana