Welchen Namespace soll ich verwenden, um den Routennamen zu finden? Ich habe Illuminate \ Support \ Facades \ Route verwendet, aber das Ergebnis ist null.
Md Rashedul Hoque Bhuiyan
Das ist die richtige Klasse. Ihrer Route ist wahrscheinlich kein Name zugewiesen. Beachten Sie, dass der Routenname und der URI nicht identisch sind.
Die Pfadmethode gibt den URI der Anforderung zurück. Wenn die eingehende Anforderung anvisiert wird http://example.com/foo/bar, gibt die Pfadmethode Folgendes zurück foo/bar:
$uri = $request->path();
Mit dieser isMethode können Sie überprüfen, ob der URI für eingehende Anforderungen einem bestimmten Muster entspricht. Sie können das *Zeichen als Platzhalter verwenden, wenn Sie diese Methode verwenden:
if($request->is('admin/*')){//}
Um die vollständige URL und nicht nur die Pfadinformationen abzurufen, können Sie die URL-Methode für die Anforderungsinstanz verwenden:
Haben Sie eine Idee, wie man dies zum Beispiel filtert, wenn man nur in der Ansicht API-Routen drucken möchteapi/...
utdev
6
Route::currentRouteName();perfekt :)
EM-Creations
$request::route()->getName()Wenn Sie bereits die $ -Anforderung verwenden oder den globalen Helfer verwenden können request()::route()->getName().
Daniel Dewhurst
@ Daniel Dewhurst: Vielleicht funktioniert es unter v <5.7, aber mit v5.7 dürfen Sie es nicht statisch verwenden, sondern request()->route()->getName()ist der richtige Weg.
Thomas
5
Die Verwendung der request()Hilfsfunktion ist in Ansichten besonders nützlich. request()->route()->getName()ist die beste Option.
Dies gibt einen Fehler zurück: "Aufruf einer Mitgliedsfunktion current () für ein Nicht-Objekt". url () gibt eine Zeichenfolge zurück, kein Objekt, daher glaube ich nicht, dass dies jemals hätte funktionieren können. Vielleicht haben Sie über eine andere Methode oder ein anderes Objekt nachgedacht, anstatt über url ()?
$request Hier wird durch Laravels Service-Container gelöst.
getName()Gibt ansonsten den Routennamen nur für benannte Routen zurück ( nullandernfalls können Sie die Route trotzdem erkunden\Illuminate\Routing\Route Objekt nach etwas anderem von Interesse durchsuchen).
Mit anderen Worten, Sie sollten Ihre Route so definieren, dass "nameOfMyRoute" zurückgegeben wird:
Vielen Dank für eine richtige Antwort, verlor 30 Minuten mit nutzlosen Vorschlägen.
Crasher
3
Zugriff auf die aktuelle Route (ab Version 5.3)
Sie können die Methoden current, currentRouteName und currentRouteAction an der Routenfassade verwenden, um auf Informationen zur Route zuzugreifen, die die eingehende Anforderung verarbeitet:
In der API-Dokumentation finden Sie Informationen zur zugrunde liegenden Klasse der Routenfassade und zur Routeninstanz, um alle verfügbaren Methoden zu überprüfen.
Mit Blick auf \Illuminate\Routing\Router.phpSie kann die Methode currentRouteNamed()durch einen Router in Ihrer Controller - Methode zu injizieren. Beispielsweise:
Sie können die Methode auch verwenden, um is()zu überprüfen, ob die Route einen der angegebenen Parameter trägt. Beachten Sie jedoch, dass diese Methode verwendet wird, preg_match()und ich habe festgestellt, dass sie bei gepunkteten Routennamen (wie 'foo.bar.done') zu seltsamem Verhalten führt . Es gibt auch die Frage der Leistung, um preg_match()
die es in der PHP-Community ein großes Thema gibt.
Aus bestimmten Gründen konnte ich keine dieser Lösungen verwenden. so ich meine Route nur in deklariert web.phpwie $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])und in meinem Controller habe ich den Namen der Route mit $routeName = $request->route()[1]['as'];der $requestsich \Illuminate\Http\Request $requestParameter in typehinted indexVerfahrenUserController
Antworten:
Versuche dies
oder
ab v5.1
Laravel v5.2
Oder wenn Sie den Aktionsnamen benötigen
Laravel 5.2 Routendokumentation
Abrufen des Anforderungs-URI
Die Pfadmethode gibt den URI der Anforderung zurück. Wenn die eingehende Anforderung anvisiert wird
http://example.com/foo/bar
, gibt die Pfadmethode Folgendes zurückfoo/bar
:Mit dieser
is
Methode können Sie überprüfen, ob der URI für eingehende Anforderungen einem bestimmten Muster entspricht. Sie können das*
Zeichen als Platzhalter verwenden, wenn Sie diese Methode verwenden:Um die vollständige URL und nicht nur die Pfadinformationen abzurufen, können Sie die URL-Methode für die Anforderungsinstanz verwenden:
Laravel v5.3 ... v5.8
Laravel 5.3 Routendokumentation
Laravel v6.x ... 7.x.
** Stand 11. November 2019 - Version 6.5 **
Laravel 6.x-Routendokumentation
Es besteht die Möglichkeit, die Anforderung zum Abrufen der Route zu verwenden
quelle
api/...
Route::currentRouteName();
perfekt :)$request::route()->getName()
Wenn Sie bereits die $ -Anforderung verwenden oder den globalen Helfer verwenden könnenrequest()::route()->getName()
.request()->route()->getName()
ist der richtige Weg.request()
Hilfsfunktion ist in Ansichten besonders nützlich.request()->route()->getName()
ist die beste Option.Mit Laravel 5.1 können Sie verwenden
quelle
{{ route(\Request::route()->getName()) }}
. Vielen Dank!Es wurde eine Möglichkeit gefunden, den aktuellen Routennamen zu finden. Dies funktioniert für Laravel v5 , v5.1.28 und v5.2.10
Namespace
und
Für Laravel laravel v5.3 können Sie einfach Folgendes verwenden:
quelle
Wenn Sie brauchen , url , nicht Routennamen , brauchen Sie nicht zu nutzen / alle anderen Klassen erfordern:
quelle
Wenn Sie ein Menü auf mehreren Routen auswählen möchten, können Sie Folgendes tun:
Oder wenn Sie nur ein einziges Menü auswählen möchten, können Sie einfach Folgendes tun:
Auch in Laravel 5.2 getestet
Hoffe das hilft jemandem.
quelle
Laravel 5.2 können Sie verwenden
Sie erhalten den aktuellen Routennamen.
quelle
name()
Methode fügt den Namen hinzu oder ändert ihn, während diegetName()
Methode ihn zurückgibt.In 5.2 können Sie die Anfrage direkt verwenden mit:
oder über die Hilfsmethode:
Ausgabebeispiel:
quelle
Der kürzeste Weg ist die Routenfassade
\Route::current()->getName()
Dies funktioniert auch in Laravel 5.4. *
quelle
In einer Controller-Aktion können Sie einfach Folgendes tun:
$request
Hier wird durch Laravels Service-Container gelöst.getName()
Gibt ansonsten den Routennamen nur für benannte Routen zurück (null
andernfalls können Sie die Route trotzdem erkunden\Illuminate\Routing\Route
Objekt nach etwas anderem von Interesse durchsuchen).Mit anderen Worten, Sie sollten Ihre Route so definieren, dass "nameOfMyRoute" zurückgegeben wird:
quelle
Sie können in Vorlage verwenden:
quelle
Jetzt in Laravel
5.3
sehe ich, dass man es ähnlich machen kann, wenn man es versucht:https://laravel.com/docs/5.3/routing#accessing-the-current-route
quelle
Zugriff auf die aktuelle Route
Rufen Sie den aktuellen Routennamen in Blade-Vorlagen ab
Weitere Informationen finden Sie unter https://laravel.com/docs/5.5/routing#accessing-the-current-route
quelle
Zugriff auf die aktuelle Route (ab Version 5.3)
Sie können die Methoden current, currentRouteName und currentRouteAction an der Routenfassade verwenden, um auf Informationen zur Route zuzugreifen, die die eingehende Anforderung verarbeitet:
In der API-Dokumentation finden Sie Informationen zur zugrunde liegenden Klasse der Routenfassade und zur Routeninstanz, um alle verfügbaren Methoden zu überprüfen.
Referenz: https://laravel.com/docs/5.2/routing#accessing-the-current-route
quelle
Request::path();
ist besser und denken Sie daranuse Request;
quelle
quelle
Ich habe verwendet, um den Routennamen in Larvel 5.3 zu erhalten
Request::path()
quelle
Mit Blick auf
\Illuminate\Routing\Router.php
Sie kann die MethodecurrentRouteNamed()
durch einen Router in Ihrer Controller - Methode zu injizieren. Beispielsweise:oder über die Routenfassade:
Sie können die Methode auch verwenden, um
is()
zu überprüfen, ob die Route einen der angegebenen Parameter trägt. Beachten Sie jedoch, dass diese Methode verwendet wird,preg_match()
und ich habe festgestellt, dass sie bei gepunkteten Routennamen (wie'foo.bar.done'
) zu seltsamem Verhalten führt . Es gibt auch die Frage der Leistung, umpreg_match()
die es in der PHP-Community ein großes Thema gibt.quelle
Meiner Meinung nach ist die einfachste Lösung die Verwendung dieses Helfers:
Die Dokumente finden Sie unter diesem Link
quelle
Sie können die folgende Methode verwenden:
In Laravel Version> 6.0 können Sie die folgenden Methoden verwenden:
quelle
Zugriff auf den aktuellen Routennamen im Controller
dh- http: // localhost / project_name / edit
$ request-> segment (1); //bearbeiten
(oder)
$ request-> url (); // http: // localhost / project_name / edit
quelle
In einer Hilfedatei
Sie können verwenden
Route::current()->uri()
, um die aktuelle URL abzurufen.Wenn Sie also Ihren Routennamen vergleichen, um die aktive Klasse im Menü festzulegen, ist es gut, wenn Sie verwenden
Route::currentRouteName()
um den Namen der Route zu erhalten und zu vergleichenquelle
Aus bestimmten Gründen konnte ich keine dieser Lösungen verwenden. so ich meine Route nur in deklariert
web.php
wie$router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
und in meinem Controller habe ich den Namen der Route mit$routeName = $request->route()[1]['as'];
der$request
sich\Illuminate\Http\Request $request
Parameter in typehintedindex
VerfahrenUserController
mit Lumen 5.6. Hoffe es würde jemandem helfen.
quelle
Lösung:
quelle
Sie können den folgenden Code verwenden, um den Routennamen in der Blade-Datei abzurufen
quelle