netrox
@netrox

Как получить все имена файлов из папки controllers в Laravel?

Как в Laravel получить имена файлов , которые находятся в ' app/Http/Controllers ' ? Метод route()->getAction() тут не получится использовать. В доках примеры с файлами из папки 'storage' .
  • Вопрос задан
  • 329 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
metallix
@metallix
Backend - developer
На Phalcon я использовал такой метод, что бы собрать названия контроллеров и экшенов -
const EXCLUDED_CONTROLLERS = [
        'user',
        'acl',
        'resources',
        'roles',
        'users'
    ];

    const EXCLUDED_ACTIONS = [
        'login',
        'logout'
    ];

    /**
     * Get available resources list
     */
    public function getAvailableResources(): array
    {
        $resources = [];
        $resources['*'][] = '*';

        $controllersPaths = [
            '/app/controllers/',
        ];

        foreach ($controllersPaths as $path) {

            foreach (glob(BASE_PATH . $path .'/*Controller.php') as $controller) {
                $className = basename($controller, '.php');
                $class = strtolower(str_replace('Controller', '',  basename($controller, '.php')));
                if (in_array($class, self::EXCLUDED_CONTROLLERS)) {
                    continue;
                }
                $resources[$class] = [];
                $methods = (new \ReflectionClass($className))->getMethods(\ReflectionMethod::IS_PUBLIC);
                foreach ($methods as $method) {
                    if (\Phalcon\Text::endsWith($method->name, 'Action')) {

                        $action = strtolower(str_replace('Action', '',  $method->name));
                        if (in_array($action, self::EXCLUDED_ACTIONS)) {
                            continue;
                        }

                        $resources[$class][] = $action;
                    }
                }
            }
        }

        return $resources;
    }


Немного работы напильником, и заработает на Laravel
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы