How to create Responsive FileManager in Laravel?
Tags: php, laravel, filemanager
Published: 2023-01-24 06:05:08


**If you have some corrections, recommendations or anything else to say please let me know.**

**[Read Responsive File Manager Documentation](https://responsivefilemanager.com/index.php#documentation-section)**


## **How to Install ?**

### *Install in your project*

    composer require zanysoft/laravel-responsive-filemanager

Now there is a new configuration file `rfm.php`
Install in `config/app.php`

```php
'providers' => [
     /*
     * Laravel Framework Service Providers...
     */
     ...
     // Responsive File Manager
     ZanySoft\ResponsiveFileManager\FileManagerServiceProvider::class
],
```

In `app/Http/Kernel.php` need to use StartSession, can also use and is recommended CSRF Token

```php
protected $middlewareGroups = [
    ...
    'web' => [
        ...
        \Illuminate\Session\Middleware\StartSession::class,
        // Responsive File Manager supports CSRF Token usage
        \App\Http\Middleware\VerifyCsrfToken::class
    ]
     ...
];
```
then do

```
php artisan vendor:publish --provider="ZanySoft\ResponsiveFileManager\FileManagerServiceProvider"
```
Generate private key for url identification

```
php artisan rfm:generate
```

All configs included to work out of the box.
Files are meant to be stored in public folder.

**Don't forget to set upload dir in config file**

```php
    $upload_dir = 'media/';
    $thumbs_upload_dir = 'thumbs/'; //this will create inside upload directory
 
```
   
**Set route prefix in config file**

```php

    'route_prefix' => 'filemanager/',
    //or
    'route_prefix' => 'admin/filemanager/',  
 
```
     
**Set middleware in config file for security purpose**

```php
    'middleware' => 'auth', //defaualt is web
```
### Use as StandAlone

*Use helpers to write filemanager url*

```html
    <a href="@filemanager_get_resource(dialog.php)?field_id=imgField&lang=en_EN&akey=@filemanager_get_key()">Open RFM</a>
    // OR
    <a href="@filemanager_dialog(['field_id'=>'imgField'])">Open RFM</a>    
    // OR
    <a href="@filemanager_dialog()">Open RFM</a>
```
see `USE AS STAND-ALONE FILE MANAGER` in Responsible [File Manager Doc](https://responsivefilemanager.com/index.php#documentation-section)

___

### Include in TinyMCE or CKEDITOR

*Include JS*

_ **For CKEditor**

**Replace #MYTEXTAREAJS with your textarea input**

```html
    <script src='{{ asset('/vendor/unisharp/laravel-ckeditor/ckeditor.js') }}'></script>
    <script>
        $(document).ready(function() {
            if($("#MYTEXTAREAID").length) {
                CKEDITOR.replace( 'postBody', {
                    filebrowserBrowseUrl : '@filemanager_get_resource(dialog.php)?akey=@filemanager_get_key()&type=2&editor=ckeditor&fldr=',
                    filebrowserUploadUrl : '@filemanager_get_resource(dialog.php)?akey=@filemanager_get_key()&type=2&editor=ckeditor&fldr=',
                    filebrowserImageBrowseUrl : '@filemanager_get_resource(dialog.php)?akey=@filemanager_get_key()&type=1&editor=ckeditor&fldr=',
                    language : '<?php App::getLocale() ?>'
                });
            }
        })
    </script>
```
- **For TinyMCE**

with tinymce parameters

```javascript
    $(document).ready(() => {
        $('textarea').first().tinymce({
            script_url : '/tinymce/tinymce.min.js',
            width: 680,height: 300,
            plugins: [
                "advlist autolink link image lists charmap print preview hr anchor pagebreak",
                "searchreplace wordcount visualblocks visualchars insertdatetime media nonbreaking",
                "table contextmenu directionality emoticons paste textcolor filemanager code"
        ],
        toolbar1: "undo redo | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | styleselect",
        toolbar2: "| responsivefilemanager | link unlink anchor | image media | forecolor backcolor  | print preview code ",
        image_advtab: true ,
        filemanager_access_key: '@filemanager_get_key()',
        filemanager_relative_url: true,
        filemanager_sort_by: '',
        filemanager_descending: '',
        filemanager_basefolder: '',
        filemanager_subfolder: '',
        filemanager_crossdomain: '',
        external_filemanager_path: '@external_filemanager_path()',
        filemanager_title:"Responsive Filemanager" ,
        external_plugins: { "filemanager" : "/vendor/responsivefilemanager/plugin.min.js"}
        });
    });
```
**To make private folder use .htaccess with** `Deny from all`