In Laravel 4 konnte ich den aktuellen Routennamen mit ...
Route::currentRouteName()
Wie kann ich das in Laravel 5 machen?
Versuche dies
Route::getCurrentRoute()->getPath();
oder
\Request::route()->getName()
von v5. +
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel 5.3
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
Oder wenn Sie den Aktionsnamen benötigen
Route::getCurrentRoute()->getActionName();
Alles über Laravel-Routen finden Sie in der Laravel API: http://laravel.com/api/5.0/Illuminate/Routing/Router.htmlhttp: // laravel.com/api/5.0/Illuminate/Routing.html
Anforderungs-URI abrufen
Die Pfadmethode gibt den URI der Anforderung zurück. Wenn die eingehende Anforderung auf http://example.com/foo/bar
gerichtet ist, gibt die Pfadmethode foo/bar
zurück:
$uri = $request->path();
Mit der Methode is
können Sie überprüfen, ob der eingehende Anforderungs-URI 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();
Mit Laravel 5.1 können Sie verwenden
\Request::route()->getName()
Es wurde ein Weg gefunden, die aktuellen Routennamen für laravel zu finden v5 , v5.1.28 und v5.2.10
Namensraum
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 url , nicht Routenname benötigen, müssen Sie keine anderen Klassen verwenden/benötigen:
url()->current();
Wenn Sie das 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 einzelnes Menü auswählen möchten, tun Sie dies einfach wie folgt:
<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i> Users</a></li>
Auch getestet in Laravel 5.2
Hoffe das hilft jemandem.
Laravel 5.2 Sie können verwenden
$request->route()->getName()
Sie erhalten den aktuellen Routennamen.
Der kürzeste Weg ist die Route Fassade \Route::current()->getName()
Das funktioniert auch in Laravel 5.4. *
In 5.2 können Sie die Anfrage direkt verwenden mit:
$request->route()->getName();
oder über die Hilfsmethode:
request()->route()->getName();
Ausgabebeispiel:
"home.index"
Sie können in der Vorlage verwenden:
<?php $path = Route::getCurrentRoute()->getPath(); ?>
<?php if (starts_with($path, 'admin/')) echo "active"; ?>
Jetzt in Laravel 5.3
sehe ich, dass man ähnlich gemacht werden kann, wie Sie es versucht haben:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
In einer Controller-Aktion können Sie Folgendes tun:
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
$request
wird durch den Dienstcontainer von Laravel aufgelöst.
getName()
gibt den Routennamen für named routes only zurück, andernfalls null
(Sie könnten das \Illuminate\Routing\Route
-Objekt jedoch nach etwas anderem durchsuchen, das von Interesse ist).
Mit anderen Worten, Sie sollten Ihre Route so definieren, dass "nameOfMyRoute" zurückgegeben wird:
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => '[email protected]'
]);
Request::path();
ist besser, und denken Sie daran, Use Request;
Zugriff auf die aktuelle Route (v5.3)
Sie können die Methoden current, currentRouteName und currentRouteAction in der Route-Fassade verwenden, um auf Informationen zu der Route zuzugreifen, die die eingehende Anforderung verarbeitet:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
In der API-Dokumentation finden Sie sowohl die zugrunde liegende Klasse der Route-Fassade als auch die Route-Instanz, um alle verfügbaren Methoden zu überprüfen.
Referenz: https://laravel.com/docs/5.2/routing#accessing-the-current-route
Ich habe in laravel 5.3 verwendet, um den Routennamen zu erhalten
_Request::path()
_
Zugriff auf die aktuelle Route
Rufen Sie den aktuellen Routennamen in Blade-Vorlagen ab
{{Route :: currentRouteName ()}}, um den Namen der Route abzurufen
für weitere Informationen https://laravel.com/docs/5.5/routing#accessing-the-current-route
Bei \Illuminate\Routing\Router.php
können Sie die Methode currentRouteNamed()
verwenden, indem Sie einen Router in Ihre Controller-Methode einfügen. Zum Beispiel:
use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}
oder mit der Route Fassade:
public function index(Request $request) {
return view(\Route::currentRouteNamed('foo') ? 'view1' : 'view2');
}
Sie können auch die Methode is()
verwenden, um zu überprüfen, ob die Route einen der angegebenen Parameter benannt hat. Beachten Sie jedoch, dass diese Methode preg_match()
verwendet, und ich habe erfahren, dass sie bei punktierten Routennamen (wie 'foo.bar.done'
) ein seltsames Verhalten verursacht. Es gibt auch die Frage der Leistung um preg_match()
Das ist ein großes Thema in der PHP Community.
public function index(Request $request) {
return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
Meiner Meinung nach ist die einfachste Lösung, diesen Helfer zu verwenden:
request()->route()->getName()
Zu den Dokumenten siehe dieser Link
aus irgendeinem Grund konnte ich keine dieser Lösungen verwenden. Also habe ich meine Route in _web.php
_ als $router->get('/api/v1/users', ['as' => 'index', 'uses' => '[email protected]'])
deklariert und in meinem Controller habe ich den Namen der Route mit $routeName = $request->route()[1]['as'];
erhalten, der _$request
_ ist _\Illuminate\Http\Request $request
_ typehinted Parameter in index
Methode von UserController
unter Verwendung von Lumen 5.6. Hoffe es würde jemandem helfen.
In einer Helper-Datei
Sie können Route::current()->uri()
verwenden, um die aktuelle URL abzurufen.
Wenn Sie also den Routennamen vergleichen, um die aktive Klasse im Menü festzulegen, wäre es gut, wenn Sie diese verwenden
Route::currentRouteName()
, um den Namen der Route abzurufen und zu vergleichen
$request->route()->getName();
Lösung:
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;