#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, если вызывается извне класса. чего вы хотите достичь, имея возможность проверять текущее имя модуля?