fix Определение пути к модулю

This commit is contained in:
origami11@yandex.ru 2022-12-15 15:50:40 +03:00
parent 73112f5bf0
commit ab13ebd289
2 changed files with 15 additions and 12 deletions

View file

@ -44,23 +44,31 @@ class Front extends Action
* @param Request $request Имя модуля * @param Request $request Имя модуля
* @return string * @return string
*/ */
public function loadModule($name, Collection $request, $controller = null) public function loadModule($name, Collection $request)
{ {
if ($this->isLoaded($name)) { if ($this->isLoaded($name)) {
$module = $this->modules[$name]; $module = $this->modules[$name];
return $module->access->execute($request); return $module->access->execute($request);
} }
$parts = explode('\\', $name);
$config = $this->config; $config = $this->config;
$moulesPath = Path::join($config->get('system', 'path'), 'modules'); $moulesPath = Path::join($config->get('system', 'path'), 'modules');
$logPath = Path::join($config->get('site', 'path'), $config->get('system', 'access.log')); $logPath = Path::join($config->get('site', 'path'), $config->get('system', 'access.log'));
$ucname = ucfirst($name); $first = $parts[0];
$moduleClass = "Modules\\$ucname\\$ucname"; $second = (count($parts) >= 2) ? $parts[1] : $parts[0];
$ucname = ucfirst($first);
$ucpart = ucfirst($second);
$moduleClass = "Modules\\$ucname\\$ucpart";
$module = new $moduleClass(); $module = new $moduleClass();
if ($module) { if ($module) {
// Инициализация модуля // Инициализация модуля
$modPath = Path::join($moulesPath, $name); $modPath = Path::join($moulesPath, $first);
$module->modulePath = $modPath; $module->modulePath = $modPath;
$module->name = $name; $module->name = $name;
// //
@ -87,14 +95,9 @@ class Front extends Action
public function execute(HttpRequest $request) public function execute(HttpRequest $request)
{ {
$name = explode("\\", $request->get('module', $this->default)); $name = $request->get('module', $this->default);
if (count($name) >= 2) {
$controller = $name[1];
} else {
$controller = null;
}
try { try {
return $this->loadModule($name[0], $request, $controller); return $this->loadModule($name, $request);
} catch (UserMessageException $ex) { //Исключение с понятным пользователю сообщением } catch (UserMessageException $ex) { //Исключение с понятным пользователю сообщением
$mode = $request->get('mode'); $mode = $request->get('mode');
if ($mode == 'ajax' || $mode == 'json') { if ($mode == 'ajax' || $mode == 'json') {

View file

@ -167,7 +167,7 @@ class Form extends View {
{ {
foreach ($schema as $key => $conv) { foreach ($schema as $key => $conv) {
list($value, $type) = $conv; list($value, $type) = $conv;
$this->field [$key]->setValue(call_user_func(array('Primitive', 'from_' . $type), $data->$value)); $this->field [$key]->setValue(call_user_func(array('ctiso\\Primitive', 'from_' . $type), $data->$value));
} }
} }