私が持っているもの:
公式サイト でサーバーへのファイルのアップロードに関する情報を見つけました:
例—画像アップロードプラグインの設定:
config.extraPlugins = 'uploadimage';
config.imageUploadUrl = '/uploader/upload.php?type=Images';
応答:ファイルが正常にアップロードされましたファイルが正常にアップロードされると、次のエントリを含むJSON応答が期待されます。
- アップロード–1に設定します。
- fileName –アップロードされたファイルの名前。
- 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タイプapplication/jsonで転送されます: " http://example.com/app_dev.php/dashboard/settings/upload/image?CKEditor=example_post_content&CKEditorFuncNum=1&langCode=en "。
しかし、それは 公式ページ (2番目のエディターを参照)のように機能している必要があります
私は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;
しかし、動作しません。何か案が?
[〜#〜]更新[〜#〜]
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応答を使用した解決策が機能しない理由を知っていますか?
2番目のエディターの example にあるものは、[〜#〜] update [〜#〜]。
それに応じて彼らはContent-Type: text/html
そして内容は
<script type="text/javascript">
window.parent.CKEDITOR.tools.callFunction("92", "\/userfiles\/images\/side-nav.jpg", "");
</script>
したがって、別の解決策はありそうにありません。
JSON応答は、コンテンツに画像を貼り付ける場合にのみ使用されます。ダイアログからのファイルアップロードには、通常のjavascript応答を使用する必要があります。