Как я могу получить текущее имя модуля [nwidart / laravel-modules]

#laravel

#laravel

Вопрос:

Как я могу получить текущее имя модуля или текущее пространство имен. из laravel я использую эту библиотеку [nwidart / laravel-modules].

Я проверяю этот код, но не решаю проблему

 $module_name = basename(__FILE__, '.module');
  

Комментарии:

1. Можете ли вы предоставить больше контекста того, где вы пытаетесь выполнить этот вызов и почему?

Ответ №1:

Чтобы получить объект модуля: $module = Module::find('blog');

Чтобы получить имя модуля: $module->getName();

Это довольно хорошо задокументировано автором пакета здесь: https://nwidart.com/laravel-modules/v1/advanced-tools/module-methods

Комментарии:

1. Нет, мне нужно получить текущий активный модуль, эта функция $module = Module::find(‘blog’); эта функция возвращает просто blog> мне нужно вернуть текущий модуль

2. Я понимаю — где и зачем вам это нужно?

3. Мне нужно вставить helper.php , потому что функция обратного перевода по имени модуля getFullPathTranslate($key, $value) { возвращает trans(‘base::admin/’ . $key . ‘.’ . $value ); }

4. Хорошо, это требует дополнительных разъяснений. Вам нужно получить переводы из определенного модуля?

5. множественные переводы

Ответ №2:

Добавьте это в свои модули __construct controller :

     private $module_name;
    
    public function __construct()
    {
        $class = get_called_class(); // or $class = static::class;
        $arr_class = explode("\", $class);
        $this->module_name = $arr_class[1];
    }

    public function index()
    {
        echo $this->module_name;
    }
  

Комментарии:

1. Но как это можно сделать в файле helper.php я не использую в конструкторе

2. вы не можете, основываясь на том, что вызываемый класс php возвращает FALSE, если вызывается извне класса. чего вы хотите достичь, имея возможность проверять текущее имя модуля?