Как правильно использовать runSnippet в modx api?
Сильно не пинайте.
На сайте есть форма, при отправке Ajax отправляет на php данные на проверку. Пытаюсь вызвать сниппет phpthumbof
php
На сайте есть форма, при отправке Ajax отправляет на php данные на проверку. Пытаюсь вызвать сниппет phpthumbof
php
<?php
// Подключаем modx api
define('MODX_API_MODE', true);
require $_SERVER['DOCUMENT_ROOT'].'/index.php';
....
$options = "w=100&h=100&zc=1&far=C&q=95";
$image = $_SERVER["REQUEST_SCHEME"] . '://' . $_SERVER["SERVER_NAME"].'/user_upload/'.$fileName; // тут все правильно
$userImage = $modx->runSnippet('phpthumbof', array('input' => $image, 'options' => $options)); // комментируя эту строку никаких ошибок не появляется
echo json_encode(['error' => '<img src="'.$userImage.'" alt="">'], JSON_UNESCAPED_UNICODE);
exit;
....
При сабмите появляется ошибка{"readyState":4,"responseText":"","status":500,"statusText":"error"}
Комментарии: 11
Может phpthumbof скармливать не ссылку на картинку, а локальный путь к ней? Относительно корня сайта.
Простите, локальный путь как понять? Сейчас ссылка такая —
https://mysite.ru/user_upload/imageName.jpg
$image = '/user_upload/'.$fileName;
пробовал, та же ошибка,
$image = $_SERVER['DOCUMENT_ROOT'].'/user_upload/'.$fileName;
та же история
Я проверил это код в консоли, всё сработало, может ошибка не в нём?
Здравствуйте, имеете в виду компонент console? Дело в том, что я запуская эту же команду runSnippet, таким же способом только внутри сниппета и там тоже все работает, ума уже не приложу что не так.
А вы проверяли переменные перед запуском runSnippet, в $image точно корректная строка?
К сожалению, да, там ссылка на картинку. И абсолютную пробовал и локальную
Попробуйте в опциях оставить только длину и ширину. Обязательно укажите локальную ссылку:
$image = $_SERVER['DOCUMENT_ROOT'] . '/user_upload/' . $fileName;
А так у вас серверная ошибка, смотрите логи, на крайняк попробуйте установить pThumb и попробуйте через него генерировать изображения. $image = $_SERVER['DOCUMENT_ROOT'] . '/user_upload/' . $fileName;
— так тоже пытался сделать, установил pthumb. В логах php ошибка PHP Fatal error: Uncaught Error: Call to a member function runSnippet() on null in /home/…/public_html/theme/RedirectModxApiAjax/RedirectModxApiAjax.php:225\nStack trace:\n#0 /home/…public_html/theme/RedirectModxApiAjax/RedirectModxApiAjax.php(248): tryUpload(Array)\n#1 {main}\n thrown in /home/…/public_html/theme/RedirectModxApiAjax/RedirectModxApiAjax.php on line 225, referer https://site.com/sign-up?
tryUpload() ф-ия, где я аытаюсь запустить runSnippet. runSnippet как раз строка №225Еще в начале ф-ии tryUpload() написал
global $modx;
на всякий случай.Как можно проверить инициализировался ли и работает ли $modx object?
tryUpload — вообще выглядит так tryUpload($file), а также попытался передать аргумент $modx tryUpload($file, $modx) — та же ошибка
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.