Laravel: वर्तमान रूट नाम कैसे प्राप्त करें? (v5… v7)


226

Laravel v4 में मैं वर्तमान रूट नाम का उपयोग करने में सक्षम था ...

Route::currentRouteName()

मैं इसे Laravel v5 और Laravel v6 में कैसे कर सकता हूं ?


रूट नाम खोजने के लिए मुझे किस नामस्थान का उपयोग करना चाहिए? मैंने Illuminate \ Support \ Facades \ Route का उपयोग किया है लेकिन परिणाम शून्य है।
एमडी रशीदुल होके भुइयां

वह सही वर्ग है। आपके मार्ग को संभवतः कोई नाम नहीं दिया गया है। ध्यान दें कि मार्ग का नाम और URI समान नहीं है।
लुकसगेटर


1
आपको इसकी आवश्यकता क्यों होगी?
येवगेनी अफानसेयेव

जवाबों:


439

इसे इस्तेमाल करे

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

या

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

v5.1 से

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

लारवेल v5.2

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

या यदि आपको कार्रवाई नाम की आवश्यकता है

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

लारवेल 5.2 मार्ग प्रलेखन

अनुरोध URI को पुनः प्राप्त करना

पथ विधि अनुरोध का URI लौटाती है। इसलिए, यदि आने वाले अनुरोध को लक्षित किया जाता है http://example.com/foo/bar, तो पथ विधि वापस आ जाएगी foo/bar:

$uri = $request->path();

isविधि आपको लगता है कि आने वाली अनुरोध URI किसी दिए गए पैटर्न से मेल खाता सत्यापित करने के लिए अनुमति देता है। *इस पद्धति का उपयोग करते समय आप वर्ण को वाइल्डकार्ड के रूप में उपयोग कर सकते हैं :

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

पूर्ण URL प्राप्त करने के लिए, केवल पथ जानकारी नहीं, आप अनुरोध उदाहरण पर url विधि का उपयोग कर सकते हैं:

$url = $request->url();

लारवेल v5.3 ... v5.8

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

लारवेल 5.3 मार्ग प्रलेखन

लारवेल v6.x ... 7.x

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

** 11 नवंबर 2019 तक वर्तमान - संस्करण 6.5 **

लारवेल 6.x मार्ग प्रलेखन

मार्ग प्राप्त करने के लिए अनुरोध का उपयोग करने का एक विकल्प है

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

क्या आपको अंदाजा है कि उदाहरण के लिए इसे कैसे फ़िल्टर किया जाए, यदि कोई केवल एपी मार्गों में प्रिंट करना चाहता हैapi/...
utdev

6
Route::currentRouteName();परफेक्ट :)
EM-Creations

$request::route()->getName()यदि आप पहले से ही $ अनुरोध का उपयोग कर रहे हैं, या आप वैश्विक सहायक का उपयोग कर सकते हैं request()::route()->getName()
डैनियल डेहर्स्ट

@ डैनियल डेहर्स्ट: शायद यह v <5.7 पर काम करता है, लेकिन v5.7 के साथ आपको इसे वैधानिक रूप से उपयोग नहीं करना चाहिए, इसके बजाय request()->route()->getName()जाने का रास्ता है।
फर्थोमस

5
request()सहायक फ़ंक्शन का उपयोग करना विचारों में विशेष रूप से उपयोगी है। request()->route()->getName()सबसे अच्छा विकल्प है।
सैमुअल शिफ्टरोविच 20

38

लारवेल 5.1 का उपयोग करके, आप उपयोग कर सकते हैं

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

2
यह तब भी काम करता है जब आप इसे दृश्य पर रखते हैं {{ route(\Request::route()->getName()) }}। बहुत बहुत धन्यवाद!
bonbon.langes

24

Laravel के लिए वर्तमान मार्ग नाम काम करता है खोजने के लिए एक रास्ता मिल गया v5 , v5.1.28 और v5.2.10

नाम स्थान

use Illuminate\Support\Facades\Route;

तथा

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

लारवेल लार्वा v5.3 के लिए आप बस उपयोग कर सकते हैं:

use Illuminate\Support\Facades\Route;

Route::currentRouteName();

@ जोनाथन मेरा मानना ​​है कि किसी भी संभावित संघर्ष से बचने के लिए हमेशा पूर्ण नामस्थान का उपयोग करना बेहतर होता है।
अमीर असरफ

23

यदि आपको url की आवश्यकता है , मार्ग का नाम नहीं है , तो आपको किसी अन्य वर्ग का उपयोग करने / उसकी आवश्यकता नहीं है:

url()->current();

यह एक त्रुटि देता है: "एक गैर-वस्तु पर एक सदस्य फ़ंक्शन वर्तमान () को कॉल करें"। url () एक स्ट्रिंग देता है, एक वस्तु नहीं, इसलिए मुझे नहीं लगता कि यह कभी भी काम कर सकता था। शायद आप url () के बजाय किसी और तरीके या वस्तु के बारे में सोच रहे थे?
thelogix

1
नाह, मैं इसे दैनिक आधार पर उपयोग करता हूं। आधिकारिक डॉक्स की
फ्यूजन

3
समझा। यह केवल 5.2 या अधिक के संस्करण में काम करता है । लेकिन यह काफी अच्छा है।
thelogix

23

यदि आप कई मार्गों पर मेनू का चयन करना चाहते हैं, तो आप ऐसा कर सकते हैं:

<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>

लारावेल 5.2 में भी परीक्षण किया गया

आशा है कि यह किसी की मदद करेंगे।





13

Laravel 5.2 आप उपयोग कर सकते हैं

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

यह आपको वर्तमान मार्ग का नाम देगा।


7
यह वास्तव में गलत है। name()विधि जोड़ें या नाम बदल जाएगा, जबकि getName()विधि वापस करती है।
एरन रोटेटेवेल

9

5.2 में, आप सीधे अनुरोध का उपयोग कर सकते हैं:

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

या सहायक विधि के माध्यम से:

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

आउटपुट उदाहरण:

"home.index"

2
हेल्पर विधि सबसे अच्छी है। लार्वा-5.6 के साथ काम करता है
येवगेनी अफनासयेव

6

सबसे छोटा रास्ता मार्ग मुखौटा है \Route::current()->getName()

यह लार्वा 5.4 में भी काम करता है। *


5

नियंत्रक क्रिया में, आप बस कर सकते हैं:

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

$request यहाँ लारवेल के सेवा कंटेनर द्वारा हल किया गया है।

getName()केवल नामित मार्गों के लिए मार्ग का नाम लौटाता है , nullअन्यथा (लेकिन आप फिर भी \Illuminate\Routing\Routeकिसी अन्य चीज के लिए वस्तु का पता लगा सकते हैं)।

दूसरे शब्दों में, आपको अपना मार्ग इस तरह परिभाषित करना चाहिए कि "nameOfMyRoute" वापस आए:

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

5

आप टेम्पलेट में उपयोग कर सकते हैं:

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


4

वर्तमान मार्ग पर पहुँचना

ब्लेड टेम्पलेट्स में वर्तमान मार्ग का नाम प्राप्त करें

{{ Route::currentRouteName() }}

अधिक जानकारी के लिए https://laravel.com/docs/5.5/rout#accessing-the-current-route


एक उचित उत्तर के लिए धन्यवाद, बेकार सुझावों की कोशिश करते हुए 30 मिनट खो दिए।
क्रैश

3

वर्तमान मार्ग तक पहुँचने (v5.3 आगे)

आने वाले अनुरोध को संभालने वाले मार्ग के बारे में जानकारी प्राप्त करने के लिए आप रूट मुखौटा पर वर्तमान, currentRouteName और currentRouteAction तरीकों का उपयोग कर सकते हैं:

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

सभी सुलभ विधियों की समीक्षा करने के लिए रूट मुखौटा और रूट उदाहरण के दोनों अंतर्निहित वर्ग के लिए एपीआई प्रलेखन देखें।

संदर्भ: https://laravel.com/docs/5.2/rout#accessing-the-current-route




1

मैंने लार्वा 5.3 में मार्ग का नाम प्राप्त करने के लिए उपयोग किया है

Request::path()


1

को देखते हुए \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') के साथ अजीब व्यवहार का कारण बन सकता है । प्रदर्शन का मामला भी है preg_match() जो PHP समुदाय में एक बड़ा विषय है।

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

1

मेरी राय में सबसे आसान समाधान इस सहायक का उपयोग कर रहा है:

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

डॉक्स के लिए, यह लिंक देखें


1

आप नीचे विधि का उपयोग कर सकते हैं:

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

लारवेल संस्करण> 6.0 में, आप नीचे दिए गए तरीकों का उपयोग कर सकते हैं:

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();


0

एक हेल्पर फ़ाइल में,

Route::current()->uri()आप वर्तमान URL प्राप्त करने के लिए उपयोग कर सकते हैं ।

इसलिए, यदि आप मेनू पर सक्रिय वर्ग सेट करने के लिए अपने रूट नाम की तुलना करते हैं तो यह अच्छा होगा यदि आप उपयोग करते हैं

Route::currentRouteName() मार्ग का नाम पाने के लिए और तुलना करें


0

कुछ कारणों से, मैं इनमें से किसी भी समाधान का उपयोग नहीं कर सका। इसलिए मैंने अभी अपना रूट घोषित web.phpकिया है $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])और अपने कंट्रोलर में मुझे उस रूट का नाम मिला है $routeName = $request->route()[1]['as'];जिसके इस्तेमाल $requestसे \Illuminate\Http\Request $requestटाइप किया गया indexहैUserController

लुमेन 5.6 का उपयोग करना। आशा है कि यह किसी की मदद करेगा।


0

उपाय :

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.