web-dev-qa-db-ja.com

現在のルート名を取得する方法

Laravel 4では、現在のルート名を取得できました。

Route::currentRouteName()

Laravel 5でどのようにできますか?

これを試して

Route::getCurrentRoute()->getPath();

または

\Request::route()->getName()

バージョン5以降。

use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();

Laravel 5.3

Route::currentRouteName(); //use Illuminate\Support\Facades\Route;

アクション名が必要な場合

Route::getCurrentRoute()->getActionName();

あなたはLaravel AP​​Iでlaravel Routesについてのすべてを見つけることができます: http://laravel.com/api/5.0/Illuminate/Routing/Router.htmlhttp://laravel.com /api/5.0/Illuminate/Routing.html

リクエストURIを取得する

PathメソッドはリクエストのURIを返します。そのため、着信要求がhttp://example.com/foo/barをターゲットとしている場合、pathメソッドはfoo/barを返します。

$uri = $request->path();

isメソッドを使用すると、着信要求URIが特定のパターンと一致することを確認できます。この方法を利用する場合、*文字をワイルドカードとして使用できます。

if ($request->is('admin/*')) {
    //
}

パス情報だけでなく完全なURLを取得するには、リクエストインスタンスでurlメソッドを使用します。

$url = $request->url();
331
Adnan

Laravel 5.1を使って、あなたは使うことができます

\Request::route()->getName()
31
loranger

現在のルート名がlaravel v5 v5.1.28 、および v5.2.10 で機能することを確認する方法が見つかりました。

名前空間

use Illuminate\Support\Facades\Route;

そして

$currentPath= Route::getFacadeRoot()->current()->uri();

Laravel laravel v5.3 の場合は、単に使用することができます。

use Illuminate\Support\Facades\Route;

Route::currentRouteName();

ルート名 ではなく url が必要な場合は、他のクラスを/ requireする必要はありません。

url()->current();
20
Fusion

複数のルートでメニューを選択したい場合は、次のようにします。

<li class="{{ (Request::is('products/*') || Request::is('products') || Request::is('product/*') ? 'active' : '') }}"><a href="{{url('products')}}"><i class="fa fa-code-fork"></i>&nbsp; Products</a></li>

あるいは、単一のメニューだけを選択したい場合は、次のようにします。

<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i>&nbsp; Users</a></li>

Laravel 5.2でもテストされています

これが誰かに役立つことを願っています。

15
Webistan

Laravel 5.2あなたが使うことができる

$request->route()->getName()

それはあなたに現在のルート名を与えます。

10
Jalvin Vohra

5.2では、リクエストを直接使用することができます。

$request->route()->getName();

またはヘルパーメソッドを介して:

request()->route()->getName();

出力例

"home.index"
8
Jonathan

最短経路はルートファサードです\Route::current()->getName()

これはlaravel 5.4でも機能します。

6
WhipsterCZ

あなたはテンプレートで使用することができます:

<?php $path = Route::getCurrentRoute()->getPath(); ?>
<?php if (starts_with($path, 'admin/')) echo "active"; ?>
5
JS Lee

今Laravel 5.3で私はあなたが試したのと同じように作られることができるのを見ています:

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

https://laravel.com/docs/5.3/routing#accessing-the-current-route

4
itsazzad

コントローラのアクションでは、あなただけのことができます:

public function someAction(Request $request)
{
    $routeName = $request->route()->getName();
}

ここの$requestはLaravelのサービスコンテナによって解決されます。

getName()named routes のみのルート名を返し、そうでなければnullを返します(ただし、その他の目的で\Illuminate\Routing\Routeオブジェクトを探索することもできます)。

つまり、 "nameOfMyRoute"が返されるように、このようにルートを定義する必要があります。

Route::get('my/some-action', [
    'as' => 'nameOfMyRoute',
    'uses' => 'MyController@someAction'
]);
3
Bogdan Ghervan

Request::path();が優れていて、Use Request;を忘れないでください

3
worldask

現在のルートにアクセスする(v5.3以降)

Routeファサードのcurrent、currentRouteName、およびcurrentRouteActionメソッドを使用して、着信要求を処理するルートに関する情報にアクセスできます。

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

アクセス可能なすべてのメソッドを確認するには、ルートファサードの基礎となるクラスとルートインスタンスの両方のAPIドキュメントを参照してください。

参照: https://laravel.com/docs/5.2/routing#accessing-the-current-route

2
Amitesh

Laravel 5.3でルート名を取得するために使用しました

Request::path()

1
Dipak Kolhe

現在のルートにアクセスする

Bladeテンプレートで現在のルート名を取得する

{{ Route::currentRouteName() }}

詳細情報 https://laravel.com/docs/5.5/routing#accessing-the-current-route

1
yogesh chatrola

\Illuminate\Routing\Router.phpを見ると、コントローラーメソッドにルーターを挿入することでメソッドcurrentRouteNamed()を使用できます。例えば:

use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
   return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}

または、ルートファサードを使用:

public function index(Request $request) {
   return view(\Route::currentRouteNamed('foo') ? 'view1' : 'view2');
}

また、メソッドis()を使用して、ルートが指定されたパラメータのいずれかであるかどうかを確認できますが、このメソッドはpreg_match()を使用し、点線のルート名で奇妙な動作を引き起こすことに注意してください( 'foo.bar.done')。 PHPコミュニティの大きなテーマであるpreg_match()についてもパフォーマンスの問題があります。

public function index(Request $request) {
    return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
1
Ken

私の意見では、最も簡単な解決策はこのヘルパーを使用することです:

request()->route()->getName()

ドキュメントについては、 このリンク を参照してください

0
DenBrown

いくつかの理由で、私はこれらの解決策のどれも使うことができませんでした。だから私はweb.phpで私のルートを$router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])として宣言し、私の​​コントローラで$routeName = $request->route()[1]['as'];を使ってルートの名前を取得しました。これは$requestindexUserControllerメソッドの\Illuminate\Http\Request $request typehintedパラメータです。

ルーメンを使用して5.6。誰かに役立つことを願っています。

0
MajidJafari

Helperファイルでは、

あなたは現在のURLを得るためにRoute::current()->uri()を使うことができます。

したがって、メニューでアクティブクラスを設定するためにあなたのルート名を比較するならば、それを使用すればそれは良いでしょう。

ルートの名前を取得して比較するためのRoute::currentRouteName()

0
ankit patel
$request->route()->getName();
0
panqingqiang

解決策:

 $routeArray = app('request')->route()->getAction();
    $controllerAction = class_basename($routeArray['controller']);
    list($controller, $route) = explode('@', $controllerAction);
    echo $route;
0
Kundan roy