Ajax - getPage

Здравствуйте. Есть обычный обработчик ajax запросов. Там вызывается сниппет getPage и выскакивает ошибка
<b>Fatal error</b>:  Call to a member function getParameters() on a non-object in <b>M:\OpenServer\domains\localhost\API\core\cache\includes\elements\modsnippet\1.include.cache.php</b> on line <b>75</b>
Нарыл в руководстве Боба Рэя ответ
Обычно это означает, что объект $modx не доступен в данном месте вашего кода. Если это код внутри функции, вам следует передать данный объект как:
global $modx;
в начале функции для того, чтобы дать PHP знать, что вы хотите использовать объект $modx извне функции, вместо создания нового.
Если это не сработало, иногда нужно передать $modx в функцию в качестве аргумента.
Вот мой код, куда это вставить? Пробовал в самом начале — не работает.
<?php
header('Content-Type: text/html; charset=utf-8');

function getData($action, $id){
//	global $modx;
	$res;
	
	$mtime = microtime();
	$mtime = explode(" ", $mtime);
	$mtime = $mtime[1] + $mtime[0];
	$tstart = $mtime;
	
	/* /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
	if(!defined('MODX_API_MODE')){
		define('MODX_API_MODE', true);
	}

	$modx_cache_disabled = true;

	// подключаем настройки и определим базовый путь для MODX
	require_once '../../config.core.php';

	if(!defined('MODX_CORE_PATH')) define('MODX_CORE_PATH', $_SERVER['DOCUMENT_ROOT'].'/core/');

	// подключаем класс modX
	if(!include_once (MODX_CORE_PATH . "model/modx/modx.class.php")){
		$errorMessage = 'Site temporarily unavailable';
		include(MODX_CORE_PATH . 'error/unavailable.include.php');
		header('HTTP/1.1 503 Service Unavailable');
		echo "<html><title>Error 503: Site temporarily unavailable</title><body><h1>Error 503</h1><p>{$errorMessage}</p></body></html>";
		exit();
	}

	// вывод данных из буфера
	ob_start();
	
	if(empty($options) || !is_array($options)) $options = array();
	$modx = new modX('',$options);
	if(!is_object($modx) || !($modx instanceof modX)){
		ob_end_flush();
		$errorMessage = '<a href="setup/">MODx not installed. Install now?</a>';
		include(MODX_CORE_PATH . 'error/unavailable.include.php');
		header('HTTP/1.1 503 Service Unavailable');
		echo "<html><title>Error 503: Site temporarily unavailable</title><body><h1>Error 503</h1><p>{$errorMessage}</p></body></html>";
		exit();
	}
	
	$modx -> startTime = $tstart;
	$modx -> setLogLevel(modX::LOG_LEVEL_ERROR);
	$modx -> setLogTarget('FILE');
	$modx -> setDebug(E_ALL & ~E_NOTICE);
	$modx -> initialize('web');
	
	$modx -> resource = $modx -> getObject('modResource', $id); //ОЧЕНЬ ВАЖНЫЯ СТРОКА (ПОЛУЧАЕМ ССЫЛКУ НА ТЕКУЩИЙ ОБЪЕКТ ИЗ AJAX ВЫЗОВА)
	/* /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
	
	// Вызов нужного метода
	switch($action){
		case 'paging':
			$params['parents'] = $id;
			$params['tpl'] = 'ajaxResources';
			$params['includeTVs'] = 1;
			$params['processTVs'] = 1;
			$params['showHidden'] = 1;
			$params['element'] = 'getResources';
			$params['limit'] = 1;
			$res = $modx -> runSnippet('getPage', $params);
		break;
	}

	if(!empty($res)) {
	  return $res;
	}
}

	// Откликаться будет ТОЛЬКО на ajax запросы
	if($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest'){
		return;
	}

	// сниппет будет обрабатывать не один вид запросов, поэтому работать будем по запрашиваемому действию
	$action = $_GET['action'];

	// Если в массиве POST нет действия - выход
	if (empty($action)){
		return;
	}
	else{
		echo getData($action,(int) $_POST['id']);
	}
?>
Пчеляков Михаил
29 октября 2013, 17:45
modx.pro
1 379
0

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0