アップロードなどのfilemanagerはtinymanagerでやることに変わらないのだが、事務用にメモ書き文書などを作りたいのでそれとは別にelfinderを導入することにした。
以下、簡単なインストール・設定メモ
基本は
GitHub - barryvdh/laravel-elfinder: elFinder bundle for Laravel
でいい。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が別窓で立ち上がる。
以上設定終了。