In Laravel v4 konnte ich den aktuellen Routennamen mit ...
Route::currentRouteName()
Wie kann ich das in Laravel v5 und Laravel v6 machen ?
In Laravel v4 konnte ich den aktuellen Routennamen mit ...
Route::currentRouteName()
Wie kann ich das in Laravel v5 und Laravel v6 machen ?
Antworten:
Versuche dies
Route::getCurrentRoute()->getPath();
oder
\Request::route()->getName()
ab v5.1
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel v5.2
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
Oder wenn Sie den Aktionsnamen benötigen
Route::getCurrentRoute()->getActionName();
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ück foo/bar
:
$uri = $request->path();
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:
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:
$url = $request->url();
Laravel v5.3 ... v5.8
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Laravel 5.3 Routendokumentation
Laravel v6.x ... 7.x.
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
** Stand 11. November 2019 - Version 6.5 **
Laravel 6.x-Routendokumentation
Es besteht die Möglichkeit, die Anforderung zum Abrufen der Route zu verwenden
$request->route()->getName();
api/...
Route::currentRouteName();
perfekt :)
$request::route()->getName()
Wenn Sie bereits die $ -Anforderung verwenden oder den globalen Helfer verwenden können request()::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
\Request::route()->getName()
{{ 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
use Illuminate\Support\Facades\Route;
und
$currentPath= Route::getFacadeRoot()->current()->uri();
Für Laravel laravel v5.3 können Sie einfach Folgendes verwenden:
use Illuminate\Support\Facades\Route;
Route::currentRouteName();
Wenn Sie brauchen , url , nicht Routennamen , brauchen Sie nicht zu nutzen / alle anderen Klassen erfordern:
url()->current();
Wenn Sie ein Menü auf mehreren Routen auswählen möchten, können Sie Folgendes tun:
<li class="{{ (Request::is('products/*') || Request::is('products') || Request::is('product/*') ? 'active' : '') }}"><a href="{{url('products')}}"><i class="fa fa-code-fork"></i> Products</a></li>
Oder wenn Sie nur ein einziges Menü auswählen möchten, können Sie einfach Folgendes tun:
<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i> Users</a></li>
Auch in Laravel 5.2 getestet
Hoffe das hilft jemandem.
Laravel 5.2 können Sie verwenden
$request->route()->getName()
Sie erhalten den aktuellen Routennamen.
name()
Methode fügt den Namen hinzu oder ändert ihn, während die getName()
Methode ihn zurückgibt.
In 5.2 können Sie die Anfrage direkt verwenden mit:
$request->route()->getName();
oder über die Hilfsmethode:
request()->route()->getName();
Ausgabebeispiel:
"home.index"
Der kürzeste Weg ist die Routenfassade
\Route::current()->getName()
Dies funktioniert auch in Laravel 5.4. *
In einer Controller-Aktion können Sie einfach Folgendes tun:
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
$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:
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => 'MyController@someAction'
]);
Jetzt in Laravel 5.3
sehe ich, dass man es ähnlich machen kann, wenn man es versucht:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
Zugriff auf die aktuelle Route
Rufen Sie den aktuellen Routennamen in Blade-Vorlagen ab
{{ Route::currentRouteName() }}
Weitere Informationen finden Sie unter https://laravel.com/docs/5.5/routing#accessing-the-current-route
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:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
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
Request::path();
ist besser und denken Sie daran use Request;
$request->route()->getName();
Ich habe verwendet, um den Routennamen in Larvel 5.3 zu erhalten
Request::path()
Mit Blick auf \Illuminate\Routing\Router.php
Sie kann die Methode currentRouteNamed()
durch einen Router in Ihrer Controller - Methode zu injizieren. Beispielsweise:
use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}
oder über die Routenfassade:
public function index(Request $request) {
return view(\Route::currentRouteNamed('foo') ? 'view1' : 'view2');
}
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.
public function index(Request $request) {
return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
Meiner Meinung nach ist die einfachste Lösung die Verwendung dieses Helfers:
request()->route()->getName()
Die Dokumente finden Sie unter diesem Link
Sie können die folgende Methode verwenden:
Route::getCurrentRoute()->getPath();
In Laravel Version> 6.0 können Sie die folgenden Methoden verwenden:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
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
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 vergleichen
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 typehinted index
VerfahrenUserController
mit Lumen 5.6. Hoffe es würde jemandem helfen.
Lösung:
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;
Sie können den folgenden Code verwenden, um den Routennamen in der Blade-Datei abzurufen
request()->route()->uri