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 APIで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();
Laravel 5.1を使って、あなたは使うことができます
\Request::route()->getName()
現在のルート名が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();
複数のルートでメニューを選択したい場合は、次のようにします。
<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>
あるいは、単一のメニューだけを選択したい場合は、次のようにします。
<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i> Users</a></li>
Laravel 5.2でもテストされています
これが誰かに役立つことを願っています。
Laravel 5.2あなたが使うことができる
$request->route()->getName()
それはあなたに現在のルート名を与えます。
5.2では、リクエストを直接使用することができます。
$request->route()->getName();
またはヘルパーメソッドを介して:
request()->route()->getName();
出力例
"home.index"
最短経路はルートファサードです\Route::current()->getName()
これはlaravel 5.4でも機能します。
あなたはテンプレートで使用することができます:
<?php $path = Route::getCurrentRoute()->getPath(); ?>
<?php if (starts_with($path, 'admin/')) echo "active"; ?>
今Laravel 5.3
で私はあなたが試したのと同じように作られることができるのを見ています:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
コントローラのアクションでは、あなただけのことができます:
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'
]);
Request::path();
が優れていて、Use Request;
を忘れないでください
現在のルートにアクセスする(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
Laravel 5.3でルート名を取得するために使用しました
Request::path()
現在のルートにアクセスする
Bladeテンプレートで現在のルート名を取得する
{{ Route::currentRouteName() }}
詳細情報 https://laravel.com/docs/5.5/routing#accessing-the-current-route
\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');
}
いくつかの理由で、私はこれらの解決策のどれも使うことができませんでした。だから私はweb.php
で私のルートを$router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
として宣言し、私のコントローラで$routeName = $request->route()[1]['as'];
を使ってルートの名前を取得しました。これは$request
はindex
のUserController
メソッドの\Illuminate\Http\Request $request
typehintedパラメータです。
ルーメンを使用して5.6。誰かに役立つことを願っています。
Helperファイルでは、
あなたは現在のURLを得るためにRoute::current()->uri()
を使うことができます。
したがって、メニューでアクティブクラスを設定するためにあなたのルート名を比較するならば、それを使用すればそれは良いでしょう。
ルートの名前を取得して比較するためのRoute::currentRouteName()
$request->route()->getName();
解決策:
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;