Асиф
27 июня 2013 г., 8:45

[Решено] Не запускается процессор.

Здравствуйте все! Захотелось очень разобраться в процессорах MODX, но сразу возникла проблема… Вообще не могу никак правильно запустить процессор, к примеру выложу код php файла.
<?php require_once dirname(__FILE__).'/../../../../config.core.php'; require_once MODX_CORE_PATH.'config/'.MODX_CONFIG_KEY.'.inc.php'; require_once MODX_CORE_PATH . "model/modx/modx.class.php"; $modx= new modX(); $response = $modx->runProcessor('element/chunk/create',array( 'name' => 'NewChunk', 'description' => 'A test Chunk made with runProcessor.', 'snippet' => '<h3>Chunkify!</h3>', )); if ($response->isError()) { echo $response->getMessage(); } $chunkArray = $response->getObject(); echo 'The chunk "'.$chunkArray['name'].' was created with ID '.$chunkArray['id']; ?>
Этот код находиться просто в php файле. Запускаю я его просто при обращении к нему напрямую через браузер. Процессор создания чанка взял из доков MODX'a. При обращении ничего не происходит… Ошибка не выводиться, и чанк не создается… Что я делаю не так? Может быть как то по другому запускать надо? Или нет каких либо прав доступа?
Когда вы вызываете процессор идет проверка прав доступа, а это невозможно без инициализации контекста. Попробуйте скопировать строчку из индексного файла modx, где инициализируется контекст web и вставить ее в свой файл по аналогии.
$modx->initialize('web');
Вы про эту строчку? Тоже не помогло(
Похоже разобрался… все дело из за локалки, пути не правильно выдаются, опробывал на хостинге в modx cloud и все заработало.
Может сможете еще подсказать? Запуская с админки процессор удаления объекта (в процессоре объект находиться при помощи функции $modx->getObject) все работает нормально, без ошибок. А вот если я запускаю этот процесс по время в процессе создания ресурса он не срабатывает. Долго не мог понять в чем дело, в конце концов понял что не в этом случае не работает метод $modx->getObject. Может он не подключен? Или что то еще?
Асиф, приводи в таких случаях полные листинги кода (можно на gist.github.com/ ), чтобы легче можно было сориентироваться. Второе: когда занимаешься такими экспериментами, включай вывод ошибок. К примеру, пропиши в первичном выполняемом файле так:
error_reporting(E_ALL ^ E_NOTICE); ini_set('display_errors', 1);
Если будут критические ошибки, ты их увидишь. К примеру в первой проблеме ты увидел бы критическую ошибку, что путь не был получен. Еще сразу после инициализации $modx можно прописать так:
$modx->setLogLevel(3); $modx->setLogTarget('HTML');
Это заставит MODX выводить собственные ошибки на страницу. К примеру, если MODX не смог найти файл процессора, или класс подключить, он просто так ничего тебе не скажет, а пых-пыху тоже на это ровно. А так тебе выведется сообщение о том, что файл не найден.
Ты еще только начинаешь изучать программирование, и тебе важно научиться выполнять отладку кода.
Спасибо большое!) Такими функциями я не пользовался. А можно в индексный файл modx поместить
$modx->setLogLevel(3); $modx->setLogTarget('HTML'); </code></pre>Для того что бы везде выводились ошибки? Или такое не прокатит?
А с ошибкой разобрался, оказывается Илья уже задавался этим вопросом, просто на другом сайте) Необходимо было подключить модель таблицы
$modx->addPackage('ditsnews', $modx->getOption('core_path').'components/ditsnews/model/ditsnews/');
А можно в индексный файл modx поместить
Можно. Но надо учитывать, что запроссы на коннекторы не проходят через индексный файл, и админка тоже. Потому есть еще одно надежное место — сам файл config.
А с ошибкой разобрался, оказывается Илья уже задавался этим вопросом, просто на другом сайте) Необходимо было подключить модель таблицы
Вот эта еще информация будет полезна: community.modx-cms.ru/blog/documentation/9226.html
Статью почитал, спасибо что делишься опытом))

Добавить комментарий