it-swarm.com.de

Wie erhalte ich den aktuellen Routennamen?

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();
315
Adnan

Mit Laravel 5.1 können Sie verwenden

\Request::route()->getName()
31
loranger

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();
19
Fusion

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>&nbsp; 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>&nbsp; Users</a></li>

Auch getestet in Laravel 5.2

Hoffe das hilft jemandem.

14
Webistan

Laravel 5.2 Sie können verwenden

$request->route()->getName()

Sie erhalten den aktuellen Routennamen.

9
Jalvin Vohra

Der kürzeste Weg ist die Route Fassade \Route::current()->getName()

Das funktioniert auch in Laravel 5.4. *

6
WhipsterCZ

In 5.2 können Sie die Anfrage direkt verwenden mit:

$request->route()->getName();

oder über die Hilfsmethode:

request()->route()->getName();

Ausgabebeispiel:

"home.index"
6
Jonathan

Sie können in der Vorlage verwenden:

<?php $path = Route::getCurrentRoute()->getPath(); ?>
<?php if (starts_with($path, 'admin/')) echo "active"; ?>
5
JS Lee

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

4
itsazzad

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]'
]);
3
Bogdan Ghervan

Request::path(); ist besser, und denken Sie daran, Use Request;

3
worldask

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

2
Amitesh

Ich habe in laravel 5.3 verwendet, um den Routennamen zu erhalten

_Request::path()_

1
Dipak Kolhe

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

1
yogesh chatrola

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');
}
1
Ken

Meiner Meinung nach ist die einfachste Lösung, diesen Helfer zu verwenden:

request()->route()->getName()

Zu den Dokumenten siehe dieser Link

0
DenBrown

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.

0
MajidJafari

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

0
ankit patel
$request->route()->getName();
0
panqingqiang

Lösung:

 $routeArray = app('request')->route()->getAction();
    $controllerAction = class_basename($routeArray['controller']);
    list($controller, $route) = explode('@', $controllerAction);
    echo $route;
0
Kundan roy