Добрый день, помогите решить проблему. Не знаю с чем связана. Создал дополнительную таблицу, создал пакет для MODx и добавил в систему. Добавил классы расширяющий modUser до extUser. Пользователь создается заполняются поля, все классно. Но пытаюсь обновить поля, в дополнительной таблице ничего не происходит, в основной таблице modx_users поля обновляются. В чем может быть проблема? Процедура выполнения. Сперва выбираю пользователя:
Приветствую всех. Недавно столкнулся с проблемой, передо мной стояла задача сделать 301-й редирект с несуществующего слеша (убрал в CMS) на конце URL, чтобы не пропадали внешние ссылки. Я привык решать проблемы самостоятельно, обычно нахожу решение в интернет, Но эта проблема мне оказалась не по плечу. Проблема заключается в том, что когда делаешь редирект, админка становится недоступной. Самое интересное, что я нашел в интернет:
RewriteRule ^(manager)/$ — [L] # exclude manager folder RewriteCond %{REQUEST_URI} (.)/ RewriteRule ^(.*)/$ example.com/$1 [R=301,L] Но это у меня не работает! Пробовал переименовывать папку manager, тоже не помогло. Прошу Вас участники клуба помочь в решении этой проблемы, уверен, что не у одного меня она есть.
$managers = $modx->getService('managers','Managers',dirname(FILE).'/core/components/managers/model/managers/',$scriptProperties); 1. У вас несколькими строчками выше указано require_once dirname(dirname(dirname(FILE))).'/index.php';, то есть на две директории выше, а здесь в текущей директории. Думаю, что-то здесь не то. Да и ошибка у вас лезет, что не верная директория для пакета. Invalid path specified for package: managers; using default xpdo model path: Z:/home/modx/www/core/xpdo/om/ [2014-02-02 22:50:26] (WARN @ /mods/managers/ajax.php) Да и вообще у вас, по-моему, в корне все не правильно. Вряд ли у вас подключен extendedPackage, а значит первым делом надо подключить пакет. $modx->addPackage('managers', MODX_CORE_PATH . 'components/modxsite/model/'); И только после этого подключать сервис (без указания пути). $managers = $modx->getService('managers','Managers','',$scriptProperties); А вообще правильно — делать через коннекторы, и выполнять в процессоре. Например, как это сделано в корзине.
Я делаю так: создаю статичный шаблон (напр., 'AJAX'), файл шаблона указываю ajax.php. Далее создаю пустой НЕКЕШИРУЕМЫЙ документ и его шаблоном задаю 'AJAX'. При обращении к этому документу происходит инициализация и MODX, и modxsmarty, и всего остального. И в самом ajax.php остается только прописать нужный код, без инициализации самого MODX в этом файле. Все работает.
Спасибо за ответ. Что касается второго пункта, можно по подробней? или посмотреть готовый вариант блока, а я уже адаптирую его под себя как на картинке. ?
Всем всем доброго дня. Вопрос у меня такой. Я разработал собственный некий модуль с названием 'managers', который, в свою очередь, работает с БД. В файле model\managers\managers.class.php написал следующее: <?php class Managers { public $modx; public $config = array(); function __construct(modX &$modx, array $config = array() ) { $this->modx =& $modx; <a name="cut"></a> $name = 'managers'; $basePath = dirname($this->modx->getOption('core_path',$config,$this->modx->getOption('core_path'))).'/mods/'; $this->config = array_merge(array( 'basePath' => $basePath.$name.'/core/components/'.$name.'/', 'corePath' => $basePath.$name.'/core/components/'.$name.'/', 'modelPath' => $basePath.$name.'/core/components/'.$name.'/model/', 'processorsPath' => $basePath.$name.'/core/components/'.$name.'/processors/', 'chunksPath' => $basePath.$name.'/core/components/'.$name.'/elements/chunks/', 'jsUrl' => $basePath.$name.'/assets/components/'.$name.'/js/', 'cssUrl' => $basePath.$name.'/assets/components/'.$name.'/css/', 'assetsUrl' => $basePath.$name.'/assets/components/'.$name.'/', 'connectorUrl' => $basePath.$name.'/assets/components/'.$name.'/connector.php', ),$config); $this->modx->addPackage($name,$this->config['modelPath']); } } Далее создал сниппет в котором реализован функционал модуля, но некоторые его части (например удаление записи из таблицы) хотел реализовать через ajax. Создаю файл ajax.php (где_угодно) к которому посылаю POST запрос (который приходит), но при обработке и попытке обращения к своему классу происходит вот такая вещь: [2014-02-02 22:50:26] (ERROR @ Z:\home\modx\www\mods\managers\core\components\managers\model\managers\managers.class.php: 5)
Recoverable error: Argument 2 passed to Managers::__construct() must be an array, null given, called in Z:\home\modx\www\core\xpdo\xpdo.class.php on line 1219 and defined [2014-02-02 22:50:26] (ERROR @ Z:\home\modx\www\mods\managers\core\components\managers\model\managers\managers.class.php: 22)
PHP warning: array_merge() [function.array-merge]: Argument #2 is not an array [2014-02-02 22:50:26] (ERROR @ /mods/managers/ajax.php)
Invalid path specified for package: managers; using default xpdo model path: Z:/home/modx/www/core/xpdo/om/ [2014-02-02 22:50:26] (WARN @ /mods/managers/ajax.php)
Could not load package metadata for package managers. [2014-02-02 22:50:26] (ERROR @ /mods/managers/ajax.php)
Could not load class: managersrecords from mysql.managersrecords. [2014-02-02 22:50:26] (ERROR @ /mods/managers/ajax.php)
managersrecords::load() is not a valid static method.
Fatal error: Call to a member function toArray() on a non-object in Z:\home\modx\www\mods\managers\ajax.php on line 22 при этом вот этот код: $user = $modx->getObject('modUser',$uid); выполняется на ура (следовательно modX подключился, насколько я понимаю). Код ajax.php <?php // Подключаемся define('MODX_API_MODE', true); require_once dirname(dirname(dirname(FILE))).'/index.php';
// Включаем обработку ошибок $modx->getService('error','error.modError'); $modx->setLogLevel(modX::LOG_LEVEL_INFO); $modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
$managers = $modx->getService('managers','Managers',dirname(FILE).'/core/components/managers/model/managers/',$scriptProperties);
$obj = $modx->getObject('managersrecords', array('id:=' => 1)); $obj = $obj->toArray(); Подскажите, пожалуйста, в каком направлении мне стоит копать (хочу подключить таки свой класс)?
Создал словарь, наполнил статью, сбросил кеш сайта. Если через get передать cultureKey, то данные ресурса должны были автоматически подмениться. Скорее всего дело в кеше. Если не поможет, то скинь доступы в личку. Посмотрю в чем дело.
пробовал прописать /index.php?cultureKey=en без изменений… или я не правильно понял пост выше?
Дико извиняюсь, уважаемые! Во-первых, большое спасибо за компонент! Уж очень хочется в нем разобраться… Установил, поставил словарь, перевёл одну статью для примера… а как отобразить английскую версию? Извините ради всех живых ежели я пятисотый кто задает такие дурацкие вопросы, но я очень надеюсь на вашу поддержку! Заранее благодарю!