2015-05-25 24 views

Trả lời

11

Bạn có thể lấy tên hành động hiện tại với Route::currentRouteAction(). Thật không may phương pháp này sẽ trả về một tên lớp đầy đủ tên. Vì vậy, bạn sẽ nhận được một cái gì đó như:

App\Http\Controllers\[email protected] 

Sau đó chỉ cần riêng tên phương thức và điều khiển tên:

$currentAction = \Route::currentRouteAction(); 
list($controller, $method) = explode('@', $currentAction); 
// $controller now is "App\Http\Controllers\FooBarController" 

$controller = preg_replace('/.*\\\/', '', $controller); 
// $controller now is "FooBarController" 
+0

Cảm ơn, tôi đã tự hỏi nếu laravel có một chức năng sẵn có cho điều này, bởi vì nó wil là một hoạt động tốn kém để làm điều này cho mọi yêu cầu .... – Deejay

+1

Không có chức năng sẵn có cho điều này theo như tôi biết. –

+1

@limonte Đúng vậy, không có phương pháp nào được triển khai. Trong thực tế, phương thức 'runController' trong' Illuminate \ Routing \ Route' sử dụng 'explode' theo cách tương tự để xác định' $ class' và '$ method' cần được thực hiện cho route phù hợp. – Bogdan

Các vấn đề liên quan