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']);
}
?>
проблемы после обновлений
Сегодня обновила Tickets, HybridAuth, PdoTools и после этого видимо какие-то скрипты перестали работать, так как: 1) в галлереи minishop2 при нажатии на изображение — открывается не в сплывающем окне, а в новом, 2) перестали работать кнопки SocialLikes. Я в панике!
Notice при использовании pdoResources
pdoResources с минимальными параметрами выкидывает уведомление:
miniShop не установлен.
Прошу поправить.
Notice: Undefined index: extension_packages in /home/sites/gf2/www/core/components/pdotools/model/pdotools/pdofetch.class.php on line 618
miniShop не установлен.
Прошу поправить.
Не проходит оплата через z-payment
Добрый день!
Для работы жизненно важен личный кабинет пользователя в магазине и фильтр.
Купить его не могу, потому что z-payment не обрабатывает платеж.Все доходит до момента отправки 3D secure code в смс.Смс не приходит.
Платежная система пока никакого ответа не дала.
Как быть в такой ситуации?
Для работы жизненно важен личный кабинет пользователя в магазине и фильтр.
Купить его не могу, потому что z-payment не обрабатывает платеж.Все доходит до момента отправки 3D secure code в смс.Смс не приходит.
Платежная система пока никакого ответа не дала.
Как быть в такой ситуации?
обновление LikeDislike
Есть такой компонент для голосовалки like.artdevue.com/ru/ Так вот он не работает на 2.2.9 и 2.2.10, соответственно, и я не могу обновиться.
Ajax запрос - не работает вывод текущего ресурса
Здравствуйте.
Сразу весь код ajax обработчика(лежит в assets/snippets/ajax.php) подключён как статический файл
Пишет:
Сразу весь код ajax обработчика(лежит в assets/snippets/ajax.php) подключён как статический файл
<?php
header('Content-Type: text/html; charset=utf-8');
$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';
require_once MODX_CORE_PATH.'config/'.MODX_CONFIG_KEY.'.inc.php';
require_once MODX_CORE_PATH.'model/modx/filters/modoutputfilter.class.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();
// Создаём экземпляр класса modX
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 -> getService('error','error.modError', '', '');
$modx -> getRequest();
$modx -> getParser();
echo $modx -> resource -> get('id');
Проблема: не работает вывод текущего ресурса.Пишет:
<b>Fatal error</b>: Call to a member function get() on a non-object in <b>H:\OpenServer\domains\localhost\API\assets\snippets\ajaxResources.php</b> on line <b>65</b>
Вроде пишет что $modx — не объект. Соответственно у него нельзя вызвать метод get. Что делать? Я уже голову сломал. Везде в документации написано что метод get должен работать. mFilter2. Несколько значений в одном TV.
Пробую применить mFilter под специфику недвижимости.