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 ismetoda 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:
Zwraca to błąd: „Wywołanie funkcji składowej current () na obiekcie niebędącym obiektem”. url () zwraca ciąg znaków, a nie obiekt, więc nie sądzę, aby mogło to kiedykolwiek zadziałać. Być może myślałeś o jakiejś innej metodzie lub obiekcie zamiast url ()?
$request tutaj rozwiązuje kontener serwisowy Laravela.
getName()zwraca nazwę trasy tylko dla nazwanych tras , w nullprzeciwnym razie (ale nadal możesz eksplorować \Illuminate\Routing\Routeobiekt w poszukiwaniu czegoś innego).
Innymi słowy, powinieneś zdefiniować swoją trasę w ten sposób, aby otrzymać „nameOfMyRoute”:
Dzięki za właściwą odpowiedź, straciłem 30 minut, próbując bezużytecznych sugestii.
Crasher
3
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:
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.
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.phpponieważ $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])w moim kontrolerze otrzymałem nazwę trasy, $routeName = $request->route()[1]['as'];która $requestjest \Illuminate\Http\Request $requestparametrem podanym w indexmetodzieUserController
za pomocą Lumen 5.6. Mam nadzieję, że to komuś pomoże.
Odpowiedzi:
Spróbuj tego
lub
od wersji 5.1
Laravel v5.2
Lub jeśli potrzebujesz nazwy akcji
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ócifoo/bar
: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:Aby uzyskać pełny adres URL, a nie tylko informacje o ścieżce, możesz użyć metody url w instancji żądania:
Laravel v5.3 ... v5.8
Dokumentacja trasy Laravel 5.3
Laravel v6.x ... 7.x
** Aktualny od 11 listopada 2019 r. - wersja 6.5 **
Dokumentacja trasy Laravel 6.x.
Istnieje opcja użycia żądania, aby uzyskać trasę
źródło
api/...
Route::currentRouteName();
idealne :)$request::route()->getName()
jeśli już korzystasz z żądania $ lub możesz skorzystać z globalnego pomocnikarequest()::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ć
źródło
{{ 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
i
W przypadku Laravel Laravel v5.3 możesz po prostu użyć:
źródło
Jeśli potrzebujesz adresu URL , a nie nazwy trasy , nie musisz używać / wymagać żadnych innych klas:
źródło
Jeśli chcesz wybrać menu na wielu trasach, możesz to zrobić w następujący sposób:
Lub jeśli chcesz wybrać tylko jedno menu, możesz po prostu zrobić to w ten sposób:
Testowany również w Laravel 5.2
Mam nadzieję, że komuś to pomoże.
źródło
Laravel 5.2 Możesz używać
Otrzymasz aktualną nazwę trasy.
źródło
name()
metoda będzie dodać lub zmienić nazwę, natomiastgetName()
metoda zwraca go.W 5.2 możesz użyć żądania bezpośrednio z:
lub metodą pomocniczą:
Przykład wyjściowy:
źródło
Najkrótszą drogą jest Fasada trasy
\Route::current()->getName()
Działa to również w Laravel 5.4. *
źródło
W akcji kontrolera możesz po prostu zrobić:
$request
tutaj rozwiązuje kontener serwisowy Laravela.getName()
zwraca nazwę trasy tylko dla nazwanych tras , wnull
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”:
źródło
Możesz użyć w szablonie:
źródło
Teraz w Laravel
5.3
widzę, że można zrobić podobnie, jak próbowałeś:https://laravel.com/docs/5.3/routing#accessing-the-current-route
źródło
Dostęp do bieżącej trasy
Uzyskaj bieżącą nazwę trasy w szablonach Blade
aby uzyskać więcej informacji https://laravel.com/docs/5.5/routing#accessing-the-current-route
źródło
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:
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
źródło
Request::path();
jest lepszy i pamiętaj o tymuse Request;
źródło
źródło
Użyłem nazwy trasy w Larvel 5.3
Request::path()
źródło
Patrząc na
\Illuminate\Routing\Router.php
to, możesz użyć tej metodycurrentRouteNamed()
, wstrzykując router do metody kontrolera. Na przykład:lub korzystając z fasady Route:
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żywapreg_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.źródło
Moim zdaniem najłatwiejszym rozwiązaniem jest użycie tego pomocnika:
Dokumenty można znaleźć pod tym linkiem
źródło
Możesz użyć poniższej metody:
W wersji Laravel> 6.0 możesz użyć poniższych metod:
źródło
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
źródło
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ćźródło
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 windex
metodzieUserController
za pomocą Lumen 5.6. Mam nadzieję, że to komuś pomoże.
źródło
Rozwiązanie :
źródło
Możesz użyć poniższego kodu, aby uzyskać nazwę trasy w pliku bloku
źródło