laravel-elfinder設定(ついでにckeditor連携)

laravel-elfinder設定(ついでにckeditor連携)

ネット、計算機のお伴

アップロードなどのfilemanagerはtinymanagerでやることに変わらないのだが、事務用にメモ書き文書などを作りたいのでそれとは別にelfinderを導入することにした。
以下、簡単なインストール・設定メモ
基本は

GitHub - barryvdh/laravel-elfinder: elFinder bundle for Laravel

elFinder bundle for Laravel. Contribute …
github.com

でいい。elFinder Package for Laravel 5となっているがlaravel8でも問題を感じない。
ただし公開・非公開のフォルダを分けたいので、config/filesystems.phpで次のような設定をする。

//非公開
'elf-close' => [
'driver' => 'local',
'root'=>storage_path('非公開用のパス'),
],

//公開
‘elf-disclose’ => [
‘driver’ => ‘local’,
‘root’=>storage_path(‘公開用のパス’),
‘visibility’=>’public’,
],

公開用のパスは当然URLを叩くと閲覧可能。

非公開パスはそのままだと非公開だが、当然ルーティングであれこれやれば公開設定も出来る(いまはやっていないが)。

次にconfig/elfinder.phpの設定。elfinderのfilemanager.phpのデフォルトはmy-diskで、そのまま設定すればelfinder.phpの変更は不要だが、上記のように変えてあるので、elfinder.phpで設定しないと動かない。

この定義ファイルでちょっとハマった。wikiを見ても率直に言って分かりづらい。。ので、必要最小限なものを設定した。

Upload dirをコメントアウト

//'dir' => '',

Filesystem disks (Flysytem)を次のようにする。

'disks' => [
'elf-disclose' => [
'alias' => '公開Storage',
],
'elf-close' => [
'alias' => '非公開Storage',
],
],

Routingの部分のプレフィックス変更:このプレフィックスをつけると直接elfinderにアクセス出来る(なので、web.phpを弄るときにはここに注目)

‘route’ => [
‘prefix’=>’おこのみで’,
‘middleware’ => array(‘web’, ‘auth’), //Set to null to disable middleware filter
],

なお、elfinderのドキュメントではflysystem(filsystems.php)やelfinder.phpでURL()関数を使っているが、これを使うと

composer dump-autoload

でエラーを吐くので使っては駄目。

ここまで来たら次にckeditor(version4)の設定(version5はGPL2なので使うのをためらった)。
ckeditorの画像設定やアップロードボタンでelfinderを利用して画像の読み込み・アップロードが可能となる。tinymceよりも設定が簡単なので嬉しい。

まず、ckeditor4のインストール。laravel-ckeditorというのもあるようだが、laravel8では駄目なので、本家のものをインストール
composer ckeditor/ckeditor;cp -rf vendor/ckeditor public/
とかしてpublic/ckeditorを読みに行くようにする。

次に、elfinderと連携。ckeditorを使うbladeに次の部分を付加。
<script src=”{{ asset(‘ckeditor/ckeditor.js’)}}”></script>
<script type=”text/javascript”>
この部分=>>CKEDITOR.config.filebrowserBrowseUrl='{{ route(“elfinder.ckeditor”)}}’;//これは、elfinderに組み込まれているckeditor用のルーティングname。単に上で設定したelfinderのプレフィックスに/ckeditorのパス名がつくだけ
</script>

以上で、ckeditor画面で画像ボタンを押すと「サーバブラウザ」ボタンが増えているので、ボタンを押すとelfinderが別窓で立ち上がる。

以上設定終了。