Laravel 5.4
を使用します。
機能紹介
アップロードしたファイル一覧で表示。
画像の選択とかフォルダで管理できたり。
トリミングができたり。
インストール&設定
コンポーザーでインストールします。
$ composer require unisharp/laravel-filemanager
config/app.php
のproviders
とaliases
に下記を追記します。
config/app.php
'providers' => [ // ... Unisharp\Laravelfilemanager\LaravelFilemanagerServiceProvider::class, Intervention\Image\ImageServiceProvider::class, ], 'aliases' => [ // ... 'Image' => Intervention\Image\Facades\Image::class, ],
設定フォルダとアセッツを書きコマンドで設置します。
$ php artisan vendor:publish --tag=lfm_config $ php artisan vendor:publish --tag=lfm_public
必要に応じて作成された設定ファイルconfig/lfm.php
を編集しましょう。
ルーターの追記をします。
routes/web.php
Route::get('/laravel-filemanager', '\Unisharp\Laravelfilemanager\controllers\LfmController@show'); Route::post('/laravel-filemanager/upload', '\Unisharp\Laravelfilemanager\controllers\LfmController@upload');
日本語にはローカライズされていないのでresources/lang/vendor/laravel-filemanager/ja/lfm.php
に作成します。
超適当ですが作ってみました。
lfm.php
テキストフィールドでの使用
テキストフィールドで選択ボタンをクリックして、選択した画像ファイルのパスを挿入するみたいなやつです。
入力するbladeテンプレートに下記を追加します。
fields.blade.php
<div class="input-group"> <span class="input-group-btn"> <a id="lfm" data-input="thumbnail" data-preview="holder" class="btn btn-primary"> <i class="fa fa-picture-o"></i> 画像選択 </a> </span> <input id="thumbnail" class="form-control" type="text" name="filepath"> </div> <img id="holder" style="margin-top:15px;max-height:100px;"> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> <script src="/vendor/laravel-filemanager/js/lfm.js"></script> <script> (function($) { $(function () { var route_prefix = "{{ url(config('lfm.prefix')) }}"; $('#lfm').filemanager('image', {prefix: route_prefix}); }); })(jQuery); </script>
CKEditorに組み込む
CKEditorの画像プロパティのサーバーブラウザをLaravel File Managerにして、パスをエディタに挿入することができます。
name
属性とold
の部分は変更してください。
fields.blade.php
<textarea id="my-editor" name="body" class="form-control">{!! old('body', $post->body) !!}</textarea> <script src="//cdn.ckeditor.com/4.6.2/standard/ckeditor.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script> (function($) { $(function () { var options = { filebrowserImageBrowseUrl: '/laravel-filemanager?type=Images', filebrowserImageUploadUrl: '/laravel-filemanager/upload?type=Images&_token=', filebrowserBrowseUrl: '/laravel-filemanager?type=Files', filebrowserUploadUrl: '/laravel-filemanager/upload?type=Files&_token=' }; CKEDITOR.replace('my-editor', options); $('textarea.my-editor').ckeditor(options); }); })(jQuery); </script>
他にもTinyMCE4とも連携できます。詳しくは下記ドキュメントページを参考にしてください。
Laravel File Manager