Di Laravel v4 saya bisa mendapatkan nama rute saat ini menggunakan ...
Route::currentRouteName()
Bagaimana saya bisa melakukannya di Laravel v5 dan Laravel v6 ?
Di Laravel v4 saya bisa mendapatkan nama rute saat ini menggunakan ...
Route::currentRouteName()
Bagaimana saya bisa melakukannya di Laravel v5 dan Laravel v6 ?
Jawaban:
Coba ini
Route::getCurrentRoute()->getPath();
atau
\Request::route()->getName()
dari v5.1
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel v5.2
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
Atau jika Anda membutuhkan nama tindakan
Route::getCurrentRoute()->getActionName();
Mengambil URI Permintaan
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 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:
if ($request->is('admin/*')) {
//
}
Untuk mendapatkan URL lengkap, bukan hanya info jalur, Anda dapat menggunakan metode url pada contoh permintaan:
$url = $request->url();
Laravel v5.3 ... v5.8
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Laravel v6.x ... 7.x
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
** Saat ini pada 11 November 2019 - versi 6.5 **
Ada opsi untuk menggunakan permintaan untuk mendapatkan rute
$request->route()->getName();
api/...
Route::currentRouteName();
perfect :)
$request::route()->getName()
jika Anda sudah menggunakan $ request, atau Anda bisa menggunakan global helper request()::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
\Request::route()->getName()
{{ 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
use Illuminate\Support\Facades\Route;
dan
$currentPath= Route::getFacadeRoot()->current()->uri();
Untuk Laravel laravel v5.3 Anda cukup menggunakan:
use Illuminate\Support\Facades\Route;
Route::currentRouteName();
Jika Anda memerlukan url , bukan nama rute , Anda tidak perlu menggunakan / mengharuskan kelas lain:
url()->current();
Jika Anda ingin memilih menu pada banyak rute, Anda dapat melakukannya seperti ini:
<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>
Atau jika Anda ingin memilih hanya satu menu, Anda dapat melakukannya seperti ini:
<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i> Users</a></li>
Juga diuji dalam Laravel 5.2
Semoga ini bisa membantu seseorang.
Laravel 5.2 Anda dapat menggunakan
$request->route()->getName()
Ini akan memberi Anda nama rute saat ini.
name()
metode akan menambah atau mengubah nama, sedangkan getName()
metode mengembalikannya.
Di 5.2, Anda dapat menggunakan permintaan secara langsung dengan:
$request->route()->getName();
atau melalui metode pembantu:
request()->route()->getName();
Contoh keluaran:
"home.index"
Cara terpendek adalah fasad rute
\Route::current()->getName()
Ini juga berfungsi di laravel 5.4. *
Dalam aksi pengontrol, Anda bisa melakukan:
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
$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":
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => 'MyController@someAction'
]);
Sekarang di Laravel 5.3
saya melihat bahwa dapat dibuat sama seperti Anda mencoba:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
Mengakses Rute Saat Ini
Dapatkan nama rute saat ini di templat Blade
{{ Route::currentRouteName() }}
untuk info lebih lanjut https://laravel.com/docs/5.5/routing#accessing-the-current-route
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:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
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
$request->route()->getName();
Saya telah menggunakan untuk mendapatkan nama rute di larvel 5.3
Request::path()
Melihat \Illuminate\Routing\Router.php
Anda dapat menggunakan metode ini currentRouteNamed()
dengan menyuntikkan Router di metode controller Anda. Sebagai contoh:
use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}
atau menggunakan fasad Rute:
public function index(Request $request) {
return view(\Route::currentRouteNamed('foo') ? 'view1' : 'view2');
}
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.
public function index(Request $request) {
return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
Menurut pendapat saya solusi yang paling mudah adalah menggunakan bantuan ini:
request()->route()->getName()
Untuk dokumen, lihat tautan ini
Anda dapat menggunakan metode di bawah ini:
Route::getCurrentRoute()->getPath();
Dalam versi Laravel> 6.0, Anda dapat menggunakan metode di bawah ini:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
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
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 membandingkan
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 di index
metodeUserController
menggunakan Lumen 5.6. Semoga itu bisa membantu seseorang.
Solusi:
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;
Anda dapat menggunakan kode di bawah ini untuk mendapatkan nama rute di file blade
request()->route()->uri