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?


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


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

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>

47

Ich würde es so machen:

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

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


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

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>

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


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.


15

Laravel 5.4

Globale Funktionen

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

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>

9

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

Aber hier ist ein komplexer Weg:

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

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>

8

Sie sollten dies versuchen:

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

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>

7

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

echo url()->current();

echo url()->full();

Ich bekomme das aus Laravel-Dokumenten.


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


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.


4

Für benannte Routen verwende ich:

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

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

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

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

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>



0

Der einfachste Weg ist

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

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



-1

Versuchen Sie Folgendes:

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

Fügen Sie einige Erklärung zu Ihrer Antwort hinzu
Pankaj Makwana
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.