Ich versuche Name der aktuellen Route, es zu tun mit Strecke :: currentRouteName() 5.Wie erhält man den aktuellen Routennamen in Laravel 5?
In Laravel 4 ich in der Lage mit Laravel zu bekommen war.
Wie kann ich es in Laravel 5 tun?
Dank
Ich versuche Name der aktuellen Route, es zu tun mit Strecke :: currentRouteName() 5.Wie erhält man den aktuellen Routennamen in Laravel 5?
In Laravel 4 ich in der Lage mit Laravel zu bekommen war.
Wie kann ich es in Laravel 5 tun?
Dank
Versuchen Sie, diese
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 Namen der Aktion
Route::getCurrentRoute()->getActionName();
benötigen, können Sie alles über Laravel Routen in der Laravel API finden: http://laravel.com/api/5.0/Illuminate/Routing/Router.html http://laravel.com/api/5.0/Illuminate/Routing.html
Das Abrufen URI anfordern
Die Pfadmethode gibt den URI der Anforderung zurück. Also, wenn die eingehende Anforderung an http://example.com/foo/bar
ausgerichtet ist, wird der Pfad Methode foo/bar
zurück:
$uri = $request->path();
Die is
Methode, die Sie, dass die eingehende Anforderung URI zu überprüfen erlaubt einem bestimmten Muster übereinstimmt.Sie können das *
Zeichen als Platzhalter verwenden, wenn diese Methode verwendet:
if ($request->is('admin/*')) {
//
}
Um die vollständige URL zu erhalten, nicht nur die Pfadinformationen, können Sie die URL-Methode auf der Anforderungsinstanz verwenden:
$url = $request->url();
Haben Sie eine Idee, wie dies zum Beispiel zu filtern, wenn man nur in der Ansicht api Routen 'api/... drucken möchte' – utdev
'Route :: currentRouteName();' perfekt :) –
einen Weg gefunden, die aktuelle Route Name für Laravel arbeitet finden 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 Sie können einfach verwenden:
use Illuminate\Support\Facades\Route;
Route::currentRouteName();
Übrigens müssen Sie nicht den gesamten Namespace für eine Fassade importieren. 'Route verwenden;' wird ausreichen. Das ist nur einer der Vorteile von Fassaden in Laravel. – Jonathan
In einer Controller-Aktion, könnten Sie einfach tun:
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
$request
hier durch Laravel Service-Behälter gelöst.
getName()
gibt die Routennamen für named routes nur, null
anders (aber man konnte immer noch das \Illuminate\Routing\Route
Objekt für etwas anderes von Interesse erkunden).
Mit anderen Worten: Sie Ihre Route wie folgt definiert haben sollte "nameOfMyRoute" zurückgegeben haben:
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => '[email protected]'
]);
Funktioniert nicht in Laravel 5.0 –
Mit Laravel 5.1 können Sie
\Request::route()->getName()
das funktioniert auch, wenn Sie es als '' '{{route (\ Request :: route() -> getName())}}' '' auf die Ansicht setzen. Vielen Dank! –
Sie in Vorlage verwenden können:
<?php $path = Route::getCurrentRoute()->getPath(); ?>
<?php if (starts_with($path, 'admin/')) echo "active"; ?>
Request::path();
ist besser, und denken Sie daran, Use Request;
Wenn Sie url, nicht Routennamen, Sie brauchen keine anderen Klassen zu verwenden/benötigen:
url()->current();
Dies gibt einen Fehler zurück: "Aufruf einer Memberfunktion current() für ein Nicht-Objekt".url() gibt eine Zeichenkette zurück, kein Objekt, also glaube ich nicht, dass das jemals funktioniert haben könnte. Vielleicht hast du an eine andere Methode oder ein anderes Objekt gedacht anstatt an URL()? – thelogix
Nein, ich benutze das täglich. Überprüfen Sie [offizielle Dokumente] (https://laravel.com/docs/5.2/helpers#method-url) – Fusion
Ich sehe. Dies funktioniert nur in ** Version 5.2 oder höher **. Aber es ist ziemlich nett. – thelogix
Laravel 5.2 können Sie verwenden
$request->route()->getName()
Es wird Geben Sie den aktuellen Routennamen ein.
Das ist eigentlich falsch. Die Methode 'name()' fügt den Namen hinzu oder ändert ihn, während die Methode 'getName()' ihn zurückgibt. –
Wenn Sie auf mehreren Routen zu ausgewählten Menü wollen, können Sie wie folgt 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 einzelne Menü ausgewählt wollen, können Sie einfach so tun:
<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, dass diese jemandem helfen.
In 5.2, können Sie die Anfrage direkt verwenden, mit:
$request->route()->getName();
oder über die Hilfsmethode:
request()->route()->getName();
Ausgabebeispiel:
"home.index"
Kürzester Weg Strecke Fassade \Route::current()->getName()
Dies funktioniert auch in Laravel 5.4. *
012 Jetztin Laravel 5.3
ich sehe kann in ähnlicher Weise hergestellt werden Sie versucht:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
In einer Helper-Datei,
Sie können Route::current()->uri()
verwenden, um aktuelle URL zu bekommen.
Daher Wenn Sie Ihre Routennamen zu vergleichen, auf Menü aktiv Klasse zu setzen, dann wäre es gut, wenn Sie
verwendenRoute::currentRouteName()
den Namen Route zu erhalten und vergleichen
ich für immer Routennamen verwendet habe in larvel 5,3
Request::path()
bei \Illuminate\Routing\Router.php
der Suche können Sie die Methode currentRouteNamed()
durch die Injektion eines Routers in Ihrem Controller-Methode verwenden. Zum Beispiel:
use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}
oder mit der Strecke Fassade:
public function index(Request $request) {
return view(\Route::currentRouteNamed('foo') ? 'view1' : 'view2');
}
Sie auch die Methode verwenden, um is()
zu überprüfen, ob die Route eine der angegebenen Parameter benannt, aber passen Sie diese Methode verwendet preg_match()
und Ich habe es erlebt, um merkwürdiges Verhalten mit gepunkteten Wegnamen zu verursachen (wie 'foo.bar.done'
). Es gibt auch die Frage der Leistung um preg_match()
, die ein großes Thema in der PHP-Community ist.
public function index(Request $request) {
return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
Welchen Namespace sollte ich verwenden, um den Routennamen zu finden? Ich habe Illuminate \ Support \ Facades \ Route verwendet, aber das Ergebnis ist null. – shuvrow
Das ist die richtige Klasse. Deine Route hat wahrscheinlich keinen Namen zugewiesen. Beachten Sie, dass der Routenname und der URI nicht identisch sind. – lukasgeiter
Hier ist die richtige Antwort http://stackoverflow.com/questions/27397487/get-current-path-outside-of-route –