2015-04-09 17 views
12

CSS trang web cũ của chúng tôi được thiết lập để thẻ body có id của tên bộ điều khiển và lớp tên hành động, sử dụng Zend Framework 1. Bây giờ chúng tôi đang chuyển sang Laravel 5 Tôi tìm thấy một cách để có được tên hành động thông qua các lớp học Route, nhưng không thể tìm thấy một phương pháp cho tên bộ điều khiển. Tôi không thấy gì trong tài liệu của Laravel như thế này. Bất kỳ ý tưởng?Nhận tên bộ điều khiển Laravel 5 trong chế độ xem

Đây là cách bạn thực hiện với hành động. Bạn tiêm lớp Route và sau đó gọi:

$route->getActionName().

Tôi đang tìm một cái gì đó tương tự cho bộ điều khiển. Tôi đã kiểm tra toàn bộ lớp tuyến đường và không tìm thấy gì cả.

Trả lời

27

Nếu bố cục của bạn là mẫu Blade, bạn có thể tạo trình soạn thảo chế độ xem để đưa các biến đó vào bố cục của bạn. Trong app/nhà cung cấp/AppServiceProvider.php thêm một cái gì đó như thế này:

public function boot() 
{ 
    app('view')->composer('layouts.master', function ($view) { 
     $action = app('request')->route()->getAction(); 

     $controller = class_basename($action['controller']); 

     list($controller, $action) = explode('@', $controller); 

     $view->with(compact('controller', 'action')); 
    }); 
} 

Sau đó bạn sẽ có hai biến có sẵn trong mẫu bố cục của bạn: $controller$action.

+0

tôi thích điều đó. Nó không hoàn toàn là những gì tôi cần, nhưng tôi thấy những gì bạn đang làm và tôi có thể điều chỉnh nó. Cảm ơn! – sehummel

+0

Nó hoạt động rất tốt. Cảm ơn @Martin Bean! – sehummel

+0

@sehummel Tuyệt vời! Vui vì tôi đã có thể chỉ đạo bạn đi đúng hướng. –

3

Tôi sử dụng một giải pháp đơn giản. Bạn có thể kiểm tra và sử dụng nó trong khắp mọi nơi, cũng quan điểm của bạn:

{{ dd(request()->route()->getAction()) }} 
+2

Đây là những gì tôi đang tìm kiếm !! –

+0

Nhưng, điều này là cho một chuỗi dài "App \ Http \ Controllers \ LocalLeadsSearch @ index" 'và tôi chỉ muốn' LocalLeadsSearch' –

+2

@AnujTBE TBE Bạn có thể dễ dàng tách riêng chuỗi wit explode() PHP method;) – ivahidmontazer

1

Để có được một cái gì đó giống như PostController thử sau ...

preg_match('/([a-z]*)@/i', $request->route()->getActionName(), $matches); 
$controllerName = $matches[1]; 

$ trận đấu [1] bao gồm các nhóm đầu tiên trong khi $ trận [ 0] bao gồm mọi thứ phù hợp. Vì vậy, cũng là @ mà không phải là mong muốn.

0

tôi sẽ chỉ cần sử dụng như dưới đây

$request->route()->getActionMethod()

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