var createPage = MODx.action ? MODx.action['resource/create'] : 'resource/create'; MODx.loadPage(createPage, 'class_key=dbCard');
public static function getInstance(modX &$modx, $className, array $config = array()) {
$action = call_user_func(array($className,'getDefaultController')); //Здесь подгружается функция getDefaultController переданного атрибута class_key
if (isset($_REQUEST['action'])) {
$action = str_replace(array('../','./','.','-','@'),'',$_REQUEST['action']); // а здесь action уже берется из переданного запроса, а это resource/create
}
$className = self::getControllerClassName($action,$config['namespace']); // здесь action resource/create, который передаётся из ExtJS-файла. Поэтому как получить нужный мне dash/create не могу понять.
$classPath = $config['namespace_path'].'controllers/'.$action.'.class.php';
require_once $classPath;
//* @var modManagerController $controller
$controller = new $className($modx,$config);
return $controller;
}This question has been answered by wdizant. See the first response.
public static function getInstance(modX &$modx,$className,array $config = array()) {
$resourceClass = 'modDocument';
$isDerivative = false;
if (!empty($_REQUEST['class_key'])) {
$isDerivative = true;
$resourceClass = in_array($_REQUEST['class_key'],array('modDocument','modResource')) ? 'modDocument' : $_REQUEST['class_key'];
if ($resourceClass == 'modResource') $resourceClass = 'modDocument';
} else if (!empty($_REQUEST['id']) && $_REQUEST['id'] != 'undefined') {
/** @var modResource $resource */
$resource = $modx->getObject('modResource',$_REQUEST['id']);
if ($resource && !in_array($resource->get('class_key'),array('modDocument','modResource'))) {
$isDerivative = true;
$resourceClass = $resource->get('class_key');
} else if ($resource && $resource->get('class_key') == 'modResource') { /* fix improper class key */
$resource->set('class_key','modDocument');
$resource->save();
}
}
if ($isDerivative) {
$resourceClass = str_replace(array('../','..','/','\\'),'',$resourceClass);
if (!class_exists($resourceClass) && !$modx->loadClass($resourceClass)) {
// Здесь не подключается необходимый мне класс
$resourceClass = 'modDocument';
}
$delegateView = $modx->call($resourceClass,'getControllerPath',array(&$modx));
$action = strtolower(str_replace(array('Resource','ManagerController'),'',$className));
$className = str_replace('mod','',$resourceClass).ucfirst($action).'ManagerController';
$controllerFile = $delegateView.$action.'.class.php';
if (!file_exists($controllerFile)) {
$modx->setOption('manager_theme','default');
$delegateView = $modx->call($resourceClass,'getControllerPath',array(&$modx));
$controllerFile = $delegateView.$action.'.class.php';
}
require_once $controllerFile;
}
$controller = new $className($modx,$config);
$controller->resourceClass = $resourceClass;
return $controller;
}if($modx->event->name == 'OnHandleRequest'){
$modx->addPackage('[myComponentName]', $modx->getOption('core_path').'components/[myComponentName]/model/','modx_[myComponentName]_');
}