ใน Laravel v4 ฉันสามารถรับชื่อเส้นทางปัจจุบันโดยใช้ ...
Route::currentRouteName()
ฉันจะทำได้ในLaravel v5และLaravel v6 ได้อย่างไร
ใน Laravel v4 ฉันสามารถรับชื่อเส้นทางปัจจุบันโดยใช้ ...
Route::currentRouteName()
ฉันจะทำได้ในLaravel v5และLaravel v6 ได้อย่างไร
คำตอบ:
ลองสิ่งนี้
Route::getCurrentRoute()->getPath();
หรือ
\Request::route()->getName()
จาก v5.1
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel v5.2
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
หรือถ้าคุณต้องการชื่อการกระทำ
Route::getCurrentRoute()->getActionName();
การดึง URI คำขอ
วิธีการเส้นทางส่งกลับ URI ของคำขอ ดังนั้นหากการร้องขอเข้ามาเป็นเป้าหมายที่http://example.com/foo/bar
วิธีการเส้นทางที่จะกลับfoo/bar
:
$uri = $request->path();
is
วิธีช่วยให้คุณสามารถตรวจสอบว่าการร้องขอที่เข้า URI ตรงกับรูปแบบที่กำหนด คุณอาจใช้*
อักขระเป็นอักขระตัวแทนเมื่อใช้วิธีนี้:
if ($request->is('admin/*')) {
//
}
ในการรับ URL แบบเต็มไม่เพียง แต่ข้อมูลเส้นทางคุณสามารถใช้วิธี URL ในตัวอย่างคำขอ:
$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();
** เป็นปัจจุบัน ณ วันที่ 11 พ.ย. 2562 - รุ่น 6.5 **
มีตัวเลือกในการใช้คำขอเพื่อรับเส้นทาง
$request->route()->getName();
api/...
Route::currentRouteName();
perfect :)
$request::route()->getName()
ถ้าคุณกำลังใช้คำขอ $ request()::route()->getName()
หรือคุณสามารถใช้ผู้ช่วยโลก
request()->route()->getName()
เป็นวิธีที่จะไป
request()
ฟังก์ชันตัวช่วยมีประโยชน์อย่างยิ่งในมุมมอง request()->route()->getName()
เป็นตัวเลือกที่ดีที่สุด
ใช้ Laravel 5.1 คุณสามารถใช้
\Request::route()->getName()
{{ route(\Request::route()->getName()) }}
นี้ยังทำงานเมื่อคุณใส่ไว้ในมุมมองเป็น ขอบคุณมาก!
พบวิธีค้นหาชื่อเส้นทางปัจจุบันที่ใช้งานได้กับ laravel v5 , v5.1.28และv5.2.10
namespace
use Illuminate\Support\Facades\Route;
และ
$currentPath= Route::getFacadeRoot()->current()->uri();
สำหรับ Laravel Laravel V5.3คุณก็สามารถใช้:
use Illuminate\Support\Facades\Route;
Route::currentRouteName();
หากคุณต้องการurlไม่ใช่ชื่อเส้นทางคุณไม่จำเป็นต้องใช้ / ต้องการคลาสอื่น ๆ :
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()
มันจะให้ชื่อเส้นทางปัจจุบันแก่คุณ
name()
วิธีการจะเพิ่มหรือเปลี่ยนชื่อในขณะที่getName()
วิธีการส่งกลับมัน
ใน 5.2 คุณสามารถใช้คำขอโดยตรงกับ:
$request->route()->getName();
หรือผ่านวิธีการช่วยเหลือ:
request()->route()->getName();
ตัวอย่างผลลัพธ์:
"home.index"
วิธีที่สั้นที่สุดคือซุ้มทางเดิน
\Route::current()->getName()
สิ่งนี้ยังทำงานใน laravel 5.4 ด้วย *
ในการดำเนินการควบคุมคุณสามารถทำได้:
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
$request
ที่นี่แก้ไขได้ด้วยคอนเทนเนอร์บริการของ Laravel
getName()
ส่งคืนชื่อเส้นทางสำหรับเส้นทางที่มีชื่อเท่านั้นnull
มิฉะนั้น (แต่คุณยังสามารถสำรวจ\Illuminate\Routing\Route
วัตถุเพื่อสิ่งอื่นที่น่าสนใจ)
กล่าวอีกนัยหนึ่งคุณควรกำหนดเส้นทางของคุณเช่นนี้เพื่อให้ "nameOfMyRoute" กลับมา:
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => 'MyController@someAction'
]);
คุณสามารถใช้ในเทมเพลต:
<?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
การเข้าถึงเส้นทางปัจจุบัน
รับชื่อเส้นทางปัจจุบันในเทมเพลต Blade
{{ Route::currentRouteName() }}
สำหรับข้อมูลเพิ่มเติมhttps://laravel.com/docs/5.5/routing#accessing-the-current-route
การเข้าถึงเส้นทางปัจจุบัน (v5.3 เป็นต้นไป)
คุณสามารถใช้วิธีการปัจจุบัน, currentRouteName และ currentRouteAction บนเส้นทางส่วนหน้าเพื่อเข้าถึงข้อมูลเกี่ยวกับเส้นทางที่จัดการคำขอที่เข้ามา:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
อ้างถึงเอกสาร API สำหรับทั้งคลาสพื้นฐานของซุ้มเส้นทางและอินสแตนซ์เส้นทางเพื่อทบทวนวิธีการที่เข้าถึงได้ทั้งหมด
การอ้างอิง: https://laravel.com/docs/5.2/routing#accessing-the-current-route
Request::path();
ดีกว่าและอย่าลืม use Request;
$request->route()->getName();
ฉันใช้เพื่อรับชื่อเส้นทางใน larvel 5.3
Request::path()
ดูที่\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');
}
ในความคิดของฉันทางออกที่ง่ายที่สุดคือใช้ตัวช่วยนี้:
request()->route()->getName()
สำหรับเอกสารให้ดูที่ลิงค์นี้
คุณสามารถใช้วิธีการด้านล่าง:
Route::getCurrentRoute()->getPath();
ในรุ่น Laravel> 6.0 คุณสามารถใช้วิธีการด้านล่าง:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
accesing ชื่อเส้นทางปัจจุบันในตัวควบคุม
ie- http: // localhost / project_name / edit
$ คำขอ> ส่วน (1); // แก้ไข
(หรือ)
$ คำขอ> URL (); // http: // localhost / project_name / edit
ในไฟล์ผู้ช่วย
คุณสามารถใช้Route::current()->uri()
เพื่อรับ URL ปัจจุบัน
ดังนั้นหากคุณเปรียบเทียบชื่อเส้นทางของคุณเพื่อตั้งค่าคลาสที่ใช้งานบนเมนูมันจะดีถ้าคุณใช้
Route::currentRouteName()
เพื่อรับชื่อเส้นทางและเปรียบเทียบ
ด้วยเหตุผลบางอย่างฉันไม่สามารถใช้วิธีแก้ไขปัญหาเหล่านี้ได้ ดังนั้นฉันเพิ่งประกาศเส้นทางของฉันweb.php
เป็น$router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
และในตัวควบคุมของฉันฉันได้รับชื่อของเส้นทางที่ใช้$routeName = $request->route()[1]['as'];
ซึ่ง$request
เป็น\Illuminate\Http\Request $request
พารามิเตอร์ประเภทพิมพ์ในindex
วิธีการUserController
ใช้ Lumen 5.6 หวังว่ามันจะช่วยใครซักคน
สารละลาย :
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;
คุณสามารถใช้รหัสร้องเพื่อรับชื่อเส้นทางในไฟล์เบลด
request()->route()->uri