W Laravel v4 udało mi się uzyskać bieżącą nazwę trasy za pomocą ...
Route::currentRouteName()
Jak mogę to zrobić w Laravel v5 i Laravel v6 ?
W Laravel v4 udało mi się uzyskać bieżącą nazwę trasy za pomocą ...
Route::currentRouteName()
Jak mogę to zrobić w Laravel v5 i Laravel v6 ?
Odpowiedzi:
Spróbuj tego
Route::getCurrentRoute()->getPath();
lub
\Request::route()->getName()
od wersji 5.1
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel v5.2
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
Lub jeśli potrzebujesz nazwy akcji
Route::getCurrentRoute()->getActionName();
Dokumentacja trasy Laravel 5.2
Pobieranie identyfikatora URI żądania
Metoda ścieżki zwraca identyfikator URI żądania. Jeśli więc przychodzące żądanie jest skierowane http://example.com/foo/bar
, metoda ścieżki zwróci foo/bar
:
$uri = $request->path();
Ta is
metoda umożliwia sprawdzenie, czy identyfikator URI przychodzącego żądania jest zgodny z danym wzorcem. Korzystając z *
tej metody, możesz użyć znaku jako symbolu wieloznacznego:
if ($request->is('admin/*')) {
//
}
Aby uzyskać pełny adres URL, a nie tylko informacje o ścieżce, możesz użyć metody url w instancji żądania:
$url = $request->url();
Laravel v5.3 ... v5.8
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Dokumentacja trasy Laravel 5.3
Laravel v6.x ... 7.x
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
** Aktualny od 11 listopada 2019 r. - wersja 6.5 **
Dokumentacja trasy Laravel 6.x.
Istnieje opcja użycia żądania, aby uzyskać trasę
$request->route()->getName();
api/...
Route::currentRouteName();
idealne :)
$request::route()->getName()
jeśli już korzystasz z żądania $ lub możesz skorzystać z globalnego pomocnika request()::route()->getName()
.
request()->route()->getName()
jest droga.
request()
funkcji pomocnika jest szczególnie przydatne w widokach. request()->route()->getName()
jest najlepszą opcją.
Korzystając z Laravel 5.1, możesz używać
\Request::route()->getName()
{{ route(\Request::route()->getName()) }}
. Dzięki wielkie!
Znaleziony sposób na znalezienie aktualnej nazwy trasy działa dla laravel v5 , v5.1.28 i v5.2.10
Przestrzeń nazw
use Illuminate\Support\Facades\Route;
i
$currentPath= Route::getFacadeRoot()->current()->uri();
W przypadku Laravel Laravel v5.3 możesz po prostu użyć:
use Illuminate\Support\Facades\Route;
Route::currentRouteName();
Jeśli potrzebujesz adresu URL , a nie nazwy trasy , nie musisz używać / wymagać żadnych innych klas:
url()->current();
Jeśli chcesz wybrać menu na wielu trasach, możesz to zrobić w następujący sposób:
<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>
Lub jeśli chcesz wybrać tylko jedno menu, możesz po prostu zrobić to w ten sposób:
<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i> Users</a></li>
Testowany również w Laravel 5.2
Mam nadzieję, że komuś to pomoże.
Laravel 5.2 Możesz używać
$request->route()->getName()
Otrzymasz aktualną nazwę trasy.
name()
metoda będzie dodać lub zmienić nazwę, natomiast getName()
metoda zwraca go.
W 5.2 możesz użyć żądania bezpośrednio z:
$request->route()->getName();
lub metodą pomocniczą:
request()->route()->getName();
Przykład wyjściowy:
"home.index"
Najkrótszą drogą jest Fasada trasy
\Route::current()->getName()
Działa to również w Laravel 5.4. *
W akcji kontrolera możesz po prostu zrobić:
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
$request
tutaj rozwiązuje kontener serwisowy Laravela.
getName()
zwraca nazwę trasy tylko dla nazwanych tras , w null
przeciwnym razie (ale nadal możesz eksplorować \Illuminate\Routing\Route
obiekt w poszukiwaniu czegoś innego).
Innymi słowy, powinieneś zdefiniować swoją trasę w ten sposób, aby otrzymać „nameOfMyRoute”:
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => 'MyController@someAction'
]);
Teraz w Laravel 5.3
widzę, że można zrobić podobnie, jak próbowałeś:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
Dostęp do bieżącej trasy
Uzyskaj bieżącą nazwę trasy w szablonach Blade
{{ Route::currentRouteName() }}
aby uzyskać więcej informacji https://laravel.com/docs/5.5/routing#accessing-the-current-route
Dostęp do bieżącej trasy (wer. 5.3)
Możesz użyć metod current, currentRouteName i currentRouteAction na elewacji trasy, aby uzyskać dostęp do informacji o trasie obsługującej przychodzące żądanie:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Zapoznaj się z dokumentacją interfejsu API zarówno dla podstawowej klasy fasady Route, jak i instancji Route, aby przejrzeć wszystkie dostępne metody.
Odniesienie: https://laravel.com/docs/5.2/routing#accessing-the-current-route
$request->route()->getName();
Użyłem nazwy trasy w Larvel 5.3
Request::path()
Patrząc na \Illuminate\Routing\Router.php
to, możesz użyć tej metody currentRouteNamed()
, wstrzykując router do metody kontrolera. Na przykład:
use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}
lub korzystając z fasady Route:
public function index(Request $request) {
return view(\Route::currentRouteNamed('foo') ? 'view1' : 'view2');
}
Możesz także użyć tej metody, is()
aby sprawdzić, czy trasa nosi nazwę dowolnego z podanych parametrów, ale uwaga: ta metoda używa preg_match()
i doświadczyłem, że powoduje dziwne zachowanie z kropkowanymi nazwami tras (jak 'foo.bar.done'
). Jest także kwestia wydajności, wokół preg_match()
której jest duży temat w społeczności PHP.
public function index(Request $request) {
return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
Moim zdaniem najłatwiejszym rozwiązaniem jest użycie tego pomocnika:
request()->route()->getName()
Dokumenty można znaleźć pod tym linkiem
Możesz użyć poniższej metody:
Route::getCurrentRoute()->getPath();
W wersji Laravel> 6.0 możesz użyć poniższych metod:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Dostęp do bieżącej nazwy trasy w kontrolerze
to znaczy- http: // localhost / nazwa_projektu / edycja
$ request-> segment (1); //edytować
(lub)
$ request-> url (); // http: // localhost / nazwa_projektu / edycja
W pliku pomocnika
Możesz użyć Route::current()->uri()
aby uzyskać aktualny adres URL.
Dlatego jeśli porównasz nazwę trasy, aby ustawić aktywną klasę w menu, dobrze byłoby użyć
Route::currentRouteName()
aby uzyskać nazwę trasy i porównać
z niektórych powodów nie mogłem użyć żadnego z tych rozwiązań. więc właśnie zadeklarowałem swoją trasę, web.php
ponieważ $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
w moim kontrolerze otrzymałem nazwę trasy, $routeName = $request->route()[1]['as'];
która $request
jest \Illuminate\Http\Request $request
parametrem podanym w index
metodzieUserController
za pomocą Lumen 5.6. Mam nadzieję, że to komuś pomoże.
Rozwiązanie :
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;
Możesz użyć poniższego kodu, aby uzyskać nazwę trasy w pliku bloku
request()->route()->uri