jQuery製のWYSIWYGエディタ「trumbowyg」に画像挿入機能を入れてみた
2024.06.04 09:00
2024.06.04 11:08

前回紹介したjQuery製のWYSIWYGエディタ「trumbowyg」に画像を挿入できる機能を入れてみました。このライブラリはjavascriptなので、当然画像の保存機能はありません。ということで、その部分はlaravelに任せました(今回はアップロード機能の解説は割愛)
では実際にやっていってみます。
まずは前回と同じ状態まで持っていきます。
そしてアップロードの追記をします。完成形はこんな感じです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0" />
<link rel="stylesheet" href="./js/ui/trumbowyg.min.css">
<style>
</style>
</head>
<body>
<textarea id="editor" name="body" value="テストです。<img src=''>"></textarea>
<script src="./js/jquery-3.7.1.min.js"></script>
<script src="//rawcdn.githack.com/RickStrahl/jquery-resizable/0.35/dist/jquery-resizable.min.js"></script>
<script src="./js/trumbowyg.min.js"></script>
<script src="./js/plugins/upload/trumbowyg.upload.min.js"></script>
<script type="text/javascript">
$(function(){
$('#editor').trumbowyg({
lang: 'ja',
autogrow: true,
btnsDef: {
image: {
dropdown: ['upload'],
ico: 'insertImage'
}
},
btns:[
[
'viewHTML',
'undo',
'redo',
'strong',
'link',
'image',
]
],
plugins: {
upload: {
serverPath: '/upload',
fileFieldName: 'file',
headers: {
'X-CSRF-TOKEN': $('input[name="_token"]').val(),
},
}
}
});
});
</script>
</body>
</html>
デモ画面はこんな感じ(※デモではアップロードはできません)
では追加した部分を見ていきます。
このエディタは、機能ごとにファイル単位で切り出されているため、
使いたい機能があれば都度読み込んで使う形式のようです。
わかりやすくていいですね。
ということで、upload機能を読み込むために以下を追加。
<script src="./js/plugins/upload/trumbowyg.upload.min.js"></script>
次にボタンを増やします。
まず独自ボタンを定義します。
btnsDef: {
image: {
dropdown: ['upload'],
ico: 'insertImage'
}
},
次に定義したボタンの記述。
'image',
これでボタンが追加されました!
次はアップロード処理を書きましょう。
upload: {
serverPath: '/upload',
fileFieldName: 'file',
headers: {
'X-CSRF-TOKEN': $('input[name="_token"]').val(),
},
}
serverPathにlaravelのアップロードパスを書いてあげます。
クロスドメイン対策として、headerにトークンをのせています。
これで、画像追加ボタンを押した時にLaravel経由でアップロードされ、
エラーがなければエディタに画像が表示されます。
今回は以上です!