2016-05-23 5 views
0

Мой пользовательский вспомогательный класс это:Laravel 5 - Пользовательский вспомогательный класс с глобальным доступом

расположен в приложение/начальной загрузки/ACL.php

class ACL { 

    public function __construct(){ 
     //Get user from session 
     //Get user permission array 
    } 

    public function isAllowed($key){ 
     return 'calling from ACL class'; 
    } 

} 

Теперь мне нужно получить доступ к этому классу ACL внутри все проектных контроллеров. Итак, I require_once 'ACL.php'; в моем файле app.php.

Тогда внутри моего контроллера я могу сделать следующее:

class UserController extends Controller { 

    public function editDetails() { 

     $acl = new \ACL(); 
     echo $acl->isAllowed('edit-details'); 

     //below is the code to edit details 

    } 
} 

Этот код работает, но я чувствую, что должно быть Laravel 5 правильный способ сделать это. Я хочу знать:

1) Является ли этот подход ОК или есть лучший способ достичь этого?

2) Не делая $acl = new \ACL(); в каждом контроллере, могу ли я использовать глобальную переменную? Или что-то вроде этого ACL::isAllowed('edit-details');

3) Как я могу запустить $acl->isAllowed('edit-details') условие в шаблонах Blade правильно?

Большое спасибо!

ответ

0

Почему бы вам просто не добавить его к классам?

"autoload": { 
    "classmap": [ 
     "app/Classes" 
    ] 
} 

Затем вы можете разместить свой класс в папке «/ classes» в приложении и просто использовать его. Просто запустите

composer dump-autoload 

, а затем вы можете использовать его, как и другие классы в Laravel.

Смежные вопросы