Ответ 1
Ответ JSON используется только при вставке изображения в контент, для загрузки файлов из диалогов вы должны использовать обычный ответ javascript
Что у меня:
Я нашел информацию о загрузке файлов на сервер на официальном сайте:
Пример - настройка плагина загрузки изображений:
config.extraPlugins = 'uploadimage';
config.imageUploadUrl = '/uploader/upload.php?type=Images';
Ответ: файл успешно загружен при загрузке файла успешно, то ответ JSON со следующими данными: Ожидаемый результат:
- uploaded - установите значение 1.
- имя_файла - имя загруженного файла.
- url - URL-адрес загруженный файл (с кодировкой URL).
Пример:
{
"uploaded": 1,
"fileName": "foo.jpg",
"url": "/files/foo.jpg"
}
Symfony возвращает ответ JSON:
return new JsonResponse(
array(
'uploaded' => '1',
'fileName' => $image->getName(),
'url' => $image->getWebPath()
)
);
После успешной загрузки изображения я вижу:
И ошибка в консоли JS:
Ресурс интерпретируется как Документ, но передается с типом MIME Применение /JSON: "http://example.com/app_dev.php/dashboard/settings/upload/image?CKEditor=example_post_content&CKEditorFuncNum=1&langCode=en ".
Но он должен работать как на официальной странице (см. второй редактор)
Я попытался вернуть другой ответ от Symfony, например:
$response = new Response();
$response->headers->set('Content-Type', 'application/json');
$response->setContent(
json_encode(
array(
'uploaded' => '1',
'fileName' => $image->getName(),
'url' => $image->getWebPath()
)
));
return $response;
но не работает. Любая идея?
UPDATE
Я решил проблему, используя answer. Окончательный код FCKeditor выглядит так:
$response = new Response();
$response->headers->set('Content-Type', 'text/html');
$content = "<script type=\"text/javascript\">\n";
$content .= "window.parent.CKEDITOR.tools.callFunction(1, '".$image->getWebPath()."', '' );\n";
$content .= "</script>";
$response->setContent($content);
return $response;
Кто-нибудь знает другое решение или почему решение с ответом JSON не работает?
Ответ JSON используется только при вставке изображения в контент, для загрузки файлов из диалогов вы должны использовать обычный ответ javascript
То, что они имеют в своем примере во втором редакторе, работает точно так же, как вы помещаете в UPDATE.
В ответ они имеют Content-Type: text/html
, а содержимое
<script type="text/javascript">
window.parent.CKEDITOR.tools.callFunction("92", "\/userfiles\/images\/side-nav.jpg", "");
</script>
Таким образом, вряд ли будет другое решение.