Что у меня:
- Symfony2
- CKEditor с Image и Улучшенное изображение (также image2 ) дополнения
Я нашел информацию о загрузке файлов на сервер на официальном сайте:
Пример - настройка плагина загрузки изображений:
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 не работает?