Metode jalur mengembalikan URI permintaan. Jadi, jika permintaan yang masuk ditargetkan http://example.com/foo/bar, metode jalur akan kembali foo/bar:
$uri = $request->path();
The isMetode memungkinkan Anda untuk memverifikasi bahwa permintaan yang masuk URI cocok dengan pola yang diberikan. Anda dapat menggunakan *karakter sebagai wildcard ketika menggunakan metode ini:
if($request->is('admin/*')){//}
Untuk mendapatkan URL lengkap, bukan hanya info jalur, Anda dapat menggunakan metode url pada contoh permintaan:
Apakah Anda punya ide bagaimana memfilter ini misalnya jika seseorang hanya ingin mencetak dalam tampilan api api/...
route
6
Route::currentRouteName();perfect :)
EM-Creations
$request::route()->getName()jika Anda sudah menggunakan $ request, atau Anda bisa menggunakan global helper request()::route()->getName().
Daniel Dewhurst
@ Daniel Dewhurst: Mungkin ini bekerja pada v <5.7, tetapi dengan v5.7 Anda tidak boleh menggunakannya secara statis, sebagai gantinya request()->route()->getName()adalah cara untuk pergi.
1stthomas
5
Menggunakan request()fungsi helper sangat berguna dalam tampilan. request()->route()->getName()adalah pilihan terbaik.
Ini mengembalikan kesalahan: "Panggil ke fungsi anggota saat ini () pada non-objek". url () mengembalikan string, bukan objek, jadi saya tidak berpikir ini bisa berhasil. Mungkin Anda memikirkan beberapa metode atau objek lain, alih-alih url ()?
thelogix
1
Nah, saya menggunakan ini setiap hari. Periksa dokumen resmi
Fusion
3
Saya melihat. Ini hanya berfungsi di versi 5.2 atau lebih tinggi . Tapi ini cukup bagus.
thelogix
23
Jika Anda ingin memilih menu pada banyak rute, Anda dapat melakukannya seperti ini:
$request di sini diselesaikan oleh wadah layanan Laravel.
getName()mengembalikan nama rute untuk rute yangnull ditentukan saja, jika tidak (tetapi Anda masih bisa menjelajahi \Illuminate\Routing\Routeobjek untuk hal lain yang menarik).
Dengan kata lain, rute Anda harus didefinisikan seperti ini untuk mengembalikan "nameOfMyRoute":
Terima kasih atas jawaban yang tepat, hilang 30 menit mencoba saran yang tidak berguna.
Crasher
3
Mengakses Rute Saat Ini (v5.3 dan seterusnya)
Anda dapat menggunakan metode current, currentRouteName, dan currentRouteAction pada fasad Rute untuk mengakses informasi tentang rute yang menangani permintaan yang masuk:
Melihat \Illuminate\Routing\Router.phpAnda dapat menggunakan metode ini currentRouteNamed()dengan menyuntikkan Router di metode controller Anda. Sebagai contoh:
Anda juga dapat menggunakan metode ini is()untuk memeriksa apakah rute tersebut dinamai salah satu parameter yang diberikan, tetapi berhati-hatilah dengan metode ini preg_match()dan saya telah mengalaminya untuk menyebabkan perilaku aneh dengan nama rute bertitik (seperti 'foo.bar.done'). Ada juga masalah kinerja preg_match()
yang merupakan subjek besar dalam komunitas PHP.
untuk beberapa alasan, saya tidak dapat menggunakan solusi ini. jadi aku hanya menyatakan rute saya di web.phpsebagai $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])dan di controller saya saya mendapat nama dari rute menggunakan $routeName = $request->route()[1]['as'];yang $requestadalah \Illuminate\Http\Request $requesttypehinted parameter di indexmetodeUserController
menggunakan Lumen 5.6. Semoga itu bisa membantu seseorang.
Jawaban:
Coba ini
atau
dari v5.1
Laravel v5.2
Atau jika Anda membutuhkan nama tindakan
Dokumentasi rute 5.2 Laravel
Mengambil URI Permintaan
Metode jalur mengembalikan URI permintaan. Jadi, jika permintaan yang masuk ditargetkan
http://example.com/foo/bar
, metode jalur akan kembalifoo/bar
:The
is
Metode memungkinkan Anda untuk memverifikasi bahwa permintaan yang masuk URI cocok dengan pola yang diberikan. Anda dapat menggunakan*
karakter sebagai wildcard ketika menggunakan metode ini:Untuk mendapatkan URL lengkap, bukan hanya info jalur, Anda dapat menggunakan metode url pada contoh permintaan:
Laravel v5.3 ... v5.8
Dokumentasi rute 5.3 Laravel
Laravel v6.x ... 7.x
** Saat ini pada 11 November 2019 - versi 6.5 **
Dokumentasi rute Laravel 6.x
Ada opsi untuk menggunakan permintaan untuk mendapatkan rute
sumber
api/...
Route::currentRouteName();
perfect :)$request::route()->getName()
jika Anda sudah menggunakan $ request, atau Anda bisa menggunakan global helperrequest()::route()->getName()
.request()->route()->getName()
adalah cara untuk pergi.request()
fungsi helper sangat berguna dalam tampilan.request()->route()->getName()
adalah pilihan terbaik.Menggunakan Laravel 5.1, Anda dapat menggunakan
sumber
{{ route(\Request::route()->getName()) }}
. Terima kasih banyak!Menemukan cara untuk menemukan nama rute saat ini berfungsi untuk laravel v5 , v5.1.28 dan v5.2.10
Namespace
dan
Untuk Laravel laravel v5.3 Anda cukup menggunakan:
sumber
Jika Anda memerlukan url , bukan nama rute , Anda tidak perlu menggunakan / mengharuskan kelas lain:
sumber
Jika Anda ingin memilih menu pada banyak rute, Anda dapat melakukannya seperti ini:
Atau jika Anda ingin memilih hanya satu menu, Anda dapat melakukannya seperti ini:
Juga diuji dalam Laravel 5.2
Semoga ini bisa membantu seseorang.
sumber
Laravel 5.2 Anda dapat menggunakan
Ini akan memberi Anda nama rute saat ini.
sumber
name()
metode akan menambah atau mengubah nama, sedangkangetName()
metode mengembalikannya.Di 5.2, Anda dapat menggunakan permintaan secara langsung dengan:
atau melalui metode pembantu:
Contoh keluaran:
sumber
Cara terpendek adalah fasad rute
\Route::current()->getName()
Ini juga berfungsi di laravel 5.4. *
sumber
Dalam aksi pengontrol, Anda bisa melakukan:
$request
di sini diselesaikan oleh wadah layanan Laravel.getName()
mengembalikan nama rute untuk rute yangnull
ditentukan saja, jika tidak (tetapi Anda masih bisa menjelajahi\Illuminate\Routing\Route
objek untuk hal lain yang menarik).Dengan kata lain, rute Anda harus didefinisikan seperti ini untuk mengembalikan "nameOfMyRoute":
sumber
Anda dapat menggunakan dalam template:
sumber
Sekarang di Laravel
5.3
saya melihat bahwa dapat dibuat sama seperti Anda mencoba:https://laravel.com/docs/5.3/routing#accessing-the-current-route
sumber
Mengakses Rute Saat Ini
Dapatkan nama rute saat ini di templat Blade
untuk info lebih lanjut https://laravel.com/docs/5.5/routing#accessing-the-current-route
sumber
Mengakses Rute Saat Ini (v5.3 dan seterusnya)
Anda dapat menggunakan metode current, currentRouteName, dan currentRouteAction pada fasad Rute untuk mengakses informasi tentang rute yang menangani permintaan yang masuk:
Rujuk ke dokumentasi API untuk kelas yang mendasari fasad Rute dan instance Rute untuk meninjau semua metode yang dapat diakses.
Referensi: https://laravel.com/docs/5.2/routing#accessing-the-current-route
sumber
Request::path();
lebih baik, dan ingat untukuse Request;
sumber
sumber
Saya telah menggunakan untuk mendapatkan nama rute di larvel 5.3
Request::path()
sumber
Melihat
\Illuminate\Routing\Router.php
Anda dapat menggunakan metode inicurrentRouteNamed()
dengan menyuntikkan Router di metode controller Anda. Sebagai contoh:atau menggunakan fasad Rute:
Anda juga dapat menggunakan metode ini
is()
untuk memeriksa apakah rute tersebut dinamai salah satu parameter yang diberikan, tetapi berhati-hatilah dengan metode inipreg_match()
dan saya telah mengalaminya untuk menyebabkan perilaku aneh dengan nama rute bertitik (seperti'foo.bar.done'
). Ada juga masalah kinerjapreg_match()
yang merupakan subjek besar dalam komunitas PHP.sumber
Menurut pendapat saya solusi yang paling mudah adalah menggunakan bantuan ini:
Untuk dokumen, lihat tautan ini
sumber
Anda dapat menggunakan metode di bawah ini:
Dalam versi Laravel> 6.0, Anda dapat menggunakan metode di bawah ini:
sumber
Mengakses Nama Rute Saat Ini di Kontroler
yaitu- http: // localhost / project_name / edit
$ request-> segment (1); // edit
(atau)
$ request-> url (); // http: // localhost / project_name / edit
sumber
Dalam file Helper,
Anda dapat menggunakan
Route::current()->uri()
untuk mendapatkan URL saat ini.Oleh karena itu, Jika Anda membandingkan nama rute Anda dengan mengatur kelas aktif pada menu maka akan lebih baik jika Anda menggunakan
Route::currentRouteName()
untuk mendapatkan nama rute dan membandingkansumber
untuk beberapa alasan, saya tidak dapat menggunakan solusi ini. jadi aku hanya menyatakan rute saya di
web.php
sebagai$router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
dan di controller saya saya mendapat nama dari rute menggunakan$routeName = $request->route()[1]['as'];
yang$request
adalah\Illuminate\Http\Request $request
typehinted parameter diindex
metodeUserController
menggunakan Lumen 5.6. Semoga itu bisa membantu seseorang.
sumber
Solusi:
sumber
Anda dapat menggunakan kode di bawah ini untuk mendapatkan nama rute di file blade
sumber