লারাভেল: বর্তমান রুটের নাম কীভাবে পাবেন? (ভি 5 ... ভি 7)


226

লারাভেল ভি 4 এ আমি বর্তমান রুটের নামটি ব্যবহার করে সক্ষম হয়েছি ...

Route::currentRouteName()

লারাভেল ভি 5 এবং লারাভেল ভি 6 এ আমি কীভাবে এটি করতে পারি ?


রুটের নাম খুঁজতে আমি কোন নামের স্থানটি ব্যবহার করব? আমি আলোকসজ্জা \ সমর্থন \ মুখোমুখি \ রুট ব্যবহার করেছি তবে ফলাফলটি বাতিল।
মোঃ রাশেদুল হক ভূঁইয়া

এটিই সঠিক শ্রেণি। আপনার রুটে সম্ভবত কোনও নাম নির্ধারিত নেই। নোট করুন যে রুটের নাম এবং ইউআরআই এক নয়।
lukasgeiter

এখানে ডান উত্তর stackoverflow.com/questions/27397487/...
কামিল Kiełczewski

1
আপনি এটি প্রয়োজন হবে কেন?
ইয়েভেগেনি আফানসিয়েভ

উত্তর:


439

এটা চেষ্টা কর

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

অথবা

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

v5.1 থেকে

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

লারাভেল ভি 5.2

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

অথবা আপনার ক্রিয়া নাম প্রয়োজন হলে

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

লারাভেল 5.2 রুটের ডকুমেন্টেশন

অনুরোধ ইউআরআই পুনরুদ্ধার করা হচ্ছে

পাথ পদ্ধতিটি অনুরোধের ইউআরআই প্রদান করে। সুতরাং, যদি আগত অনুরোধটিকে লক্ষ্য করা হয় http://example.com/foo/bar, তবে পথের পদ্ধতিটি ফিরে আসবে foo/bar:

$uri = $request->path();

isপদ্ধতি আপনি যে ইনকামিং অনুরোধ কোনো URI একটি প্রদত্ত প্যাটার্ন সঙ্গে মিলছে তা যাচাই করতে পারবেন। *এই পদ্ধতিটি ব্যবহার করার সময় আপনি অক্ষরটি ওয়াইল্ডকার্ড হিসাবে ব্যবহার করতে পারেন :

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

পুরো URL টি পেতে, কেবলমাত্র পথের তথ্য নয়, আপনি অনুরোধের উদাহরণটিতে ইউআরএল পদ্ধতিটি ব্যবহার করতে পারেন:

$url = $request->url();

লারাভেল ভি 5.3 ... ভি 5.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();নিখুঁত :)
ইএম-ক্রিয়েশনস

$request::route()->getName()আপনি যদি ইতিমধ্যে $ অনুরোধটি ব্যবহার করে থাকেন, বা আপনি বিশ্বব্যাপী সাহায্যকারী ব্যবহার করতে পারেন request()::route()->getName()
ড্যানিয়েল ডিউহার্স্ট

@ ড্যানিয়েল ডিউহার্স্ট: সম্ভবত এটি v <5.7 এ কাজ করে তবে v5.7 এর সাথে আপনার এটি স্ট্যাটিকভাবে ব্যবহার করা উচিত নয়, পরিবর্তে request()->route()->getName()যাওয়ার উপায়।
ম থমোমাস

5
request()সহায়ক ফাংশনটি ব্যবহার করা বিশেষভাবে দর্শনগুলির ক্ষেত্রে কার্যকর। request()->route()->getName()সেরা বিকল্প।
স্যামুয়েল শিফটারোভিচ

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();

Laravel Laravel জন্য v5.3 আপনি শুধু ব্যবহার করতে পারেন:

use Illuminate\Support\Facades\Route;

Route::currentRouteName();

@ জোনাথান আমি বিশ্বাস করি যে কোনও সম্ভাব্য দ্বন্দ্ব এড়াতে পুরো নামস্থানটি ব্যবহার করা সর্বদা ভাল।
আমির আশাইরাফ

23

আপনার যদি ইউআরএল প্রয়োজন হয় , রাস্তার নাম নয় , আপনার অন্য কোনও ক্লাস ব্যবহার করার প্রয়োজন নেই:

url()->current();

এটি একটি ত্রুটি ফেরায়: "একটি অ-অবজেক্টে সদস্য ফাংশন কারেন্ট () এ কল করুন"। ইউআরএল () কোনও স্ট্রিং দেয়, কোনও অবজেক্ট নয়, তাই আমি মনে করি না এটি কখনও কাজ করতে পারে। সম্ভবত আপনি 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 তেও পরীক্ষিত

আশা করি এটি কারও সাহায্য করবে।



লারাভেল .5.৫.২ এও পরীক্ষিত হয়েছিল
এ্যাসপিরিনেমাগা

লারাভেল ৫.7 এ পরীক্ষিত
তারিকুল ইসলাম

13

লারাভেল 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আগ্রহের অন্য কোনও কারণে অবজেক্টটি অন্বেষণ করতে পারেন )।

অন্য কথায়, আপনার নামটি "নামআফমাইরউটে" ফেরত দেওয়ার জন্য এইভাবে সংজ্ঞায়িত করা উচিত:

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/routing#accessing-the-current-route


যথাযথ উত্তরের জন্য ধন্যবাদ, অকেজো পরামর্শের 30 মিনিট হারিয়েছে।
ক্রাশার

3

বর্তমান রুট অ্যাক্সেস করা (v5.3 এর পরে)

আগত অনুরোধটি পরিচালনা করে এমন রুট সম্পর্কিত তথ্য অ্যাক্সেস করার জন্য আপনি রুট ফ্যাসিডে বর্তমান, বর্তমানের রুটনাম এবং বর্তমানরউটএকশন পদ্ধতিগুলি ব্যবহার করতে পারেন:

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

সমস্ত অ্যাক্সেসযোগ্য পদ্ধতি পর্যালোচনা করতে রুট ফ্যাসাদ এবং রুট উদাহরণের অন্তর্নিহিত বর্গ উভয়ের জন্য এপিআই ডকুমেন্টেশন দেখুন।

তথ্যসূত্র: https://laravel.com/docs/5.2/routing#accessing-the-current-route





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') এর সাথে অদ্ভুত আচরণের কারণ হয়েছি experienced এখানে পারফরম্যান্সের বিষয়টিও রয়েছে preg_match() যা পিএইচপি সম্প্রদায়ের একটি বড় বিষয়।

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


1

আপনি নীচের পদ্ধতিটি ব্যবহার করতে পারেন:

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

লারাভেল সংস্করণ> 6.0 এ, আপনি নীচের পদ্ধতিগুলি ব্যবহার করতে পারেন:

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

1

নিয়ামকটিতে বর্তমান রুটের নাম অ্যাক্সেস করা হচ্ছে

ie- HTTP: // স্থানীয় হোস্ট / PROJECT_NAME / সম্পাদনা

$ Request-> সেগমেন্ট (1); // সম্পাদন করা

(বা)

$ request-> URL (); // http: // লোকালহোস্ট / প্রকল্প_নাম / সম্পাদনা


0

একটি সহায়ক ফাইলে,

আপনার Route::current()->uri()বর্তমান ইউআরএল পেতে ব্যবহার করতে পারেন ।

সুতরাং, আপনি যদি মেনুতে সক্রিয় ক্লাস সেট করতে আপনার রুটের নামটির তুলনা করেন তবে আপনি যদি এটি ব্যবহার করেন তবে ভাল

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মাপদণ্ড typehinted indexপদ্ধতিUserController

Lumen 5.6 ব্যবহার করে। আশা করি এটি কারও সাহায্য করবে।


0

সমাধান:

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.