dev-master
9999999-develFinder file manager for Yii 2
MIT
The Requires
by Mark Ermolaev
yii2 widget elfinder file manager yii2-widgets yii2-framework
elFinder file manager for Yii 2
This extension integrates an elFinder 2.1 file manager into Yii framework 2.0. It is version with added editors src to Asset., (*1)
Install extension through composer:, (*3)
composer require d1soft/yii2-elfinder
For using elFinder you must create and configure controller. See complete example with actions for elFinder's connector,
InputFile
widget, CKEditor filebrowser*
options and TinyMCE file_picker_callback
option:, (*4)
[ 'class' => ConnectorAction::className(), 'options' => [ 'roots' => [ [ 'driver' => 'LocalFileSystem', 'path' => Yii::getAlias('@webroot') . DIRECTORY_SEPARATOR . 'uploads', 'URL' => Yii::getAlias('@web') . '/uploads/', 'mimeDetect' => 'internal', 'imgLib' => 'gd', 'accessControl' => function ($attr, $path) { // hide files/folders which begins with dot return (strpos(basename($path), '.') === 0) ? !($attr == 'read' || $attr == 'write') : null; }, ], ], ], ], 'input' => [ 'class' => InputFileAction::className(), 'connectorRoute' => 'connector', ], 'ckeditor' => [ 'class' => CKEditorAction::className(), 'connectorRoute' => 'connector', ], 'tinymce' => [ 'class' => TinyMCEAction::className(), 'connectorRoute' => 'connector', ], ]; } } ``` Reed [elFinder docs](https://github.com/Studio-42/elFinder/wiki/Connector-configuration-options-2.1) to configure connector options. ### InputFile widget Example of `InputFile` widget with enabled mime filter and preview: ```php = d1soft\elfinder\InputFile::widget([ 'name' => 'attributeName', 'clientRoute' => 'elfinder/input', 'filter' => ['image'], 'preview' => function ($value) { return yii\helpers\Html::img($value, ['width' => 200]); }, ]) ?>
Note 1: Filter option is using to display only certain files based on their mime type. Check onlyMimes
option
in elFinder docs., (*5)
Note 2: Preview displays only predefined (saved earlier) input value and not updating on the fly after new selection., (*6)
If you want to use the InputFile
widget in ActiveForm
, it can be done like this:, (*7)
<?= $form->field($model, 'attributeName') ->widget(d1soft\elfinder\InputFile::className(), [ 'clientRoute' => 'elfinder/input', ]) ?>
Using textarea instead text input (can be useful with enabled multiple selection):, (*8)
<?= d1soft\elfinder\InputFile::widget([ 'name' => 'attributeName', 'clientRoute' => 'elfinder/input', 'textarea' => true, 'textareaRows' => 3, // default is 5 ]) ?>
Enable multiple selection to select more then one file in one input:, (*9)
<?= d1soft\elfinder\InputFile::widget([ 'name' => 'attributeName', 'clientRoute' => 'elfinder/input', 'multiple' => true, ]) ?>
Default paths separator for text input is comma and newline character for textarea.
You can change them in InputFileAction
configuration:, (*10)
class ElfinderController extends Controller { public function actions() { return [ // ... 'input' => [ 'class' => InputFileAction::className(), 'connectorRoute' => 'connector', 'separator' => ',', 'textareaSeparator' => '\n', // newline character in javascript ], // ... ]; } }
For using elFinder with CKEditor widget (like this one) you need to
specify options filebrowserBrowseUrl
and (or) filebrowserImageBrowseUrl
:, (*11)
<?= d1soft\ckeditor\CKEditor::widget([ 'name' => 'attributeName', 'clientOptions' => [ // ... 'filebrowserBrowseUrl' => yii\helpers\Url::to(['elfinder/ckeditor']), 'filebrowserImageBrowseUrl' => yii\helpers\Url::to(['elfinder/ckeditor', 'filter' => 'image']), ], ]) ?>
Note: For filebrowserImageBrowseUrl
we use filter query param to display only images., (*12)
For using elFinder with TinyMCE 4 widget (like this one) you need to
specify option file_picker_callback
:, (*13)
<?= d1soft\tinymce\TinyMce::widget([ 'name' => 'attributeName', 'clientOptions' => [ // ... 'file_picker_callback' => d1soft\elfinder\TinyMCE::getFilePickerCallback(['elfinder/tinymce']), ], ]) ?>
Note: option file_picker_callback
available since 4.1.0 version of TinyMCE js plugin., (*14)
With second param in getFilePickerCallback()
you can set additional tinymce.WindowManager.open
settings:, (*15)
TinyMCE::getFilePickerCallback(['elfinder/tinymce'], ['width' => 1200, 'height' => 600])
Add ElFinder
widget to any view:, (*16)
<?= d1soft\elfinder\ElFinder::widget([ 'connectorRoute' => ['elfinder/connector'], 'settings' => [ 'height' => 640, ], 'buttonNoConflict' => true, ]) ?>
Note: If you are using Bootstrap 3 enable buttonNoConflict
option to resolve conflict between
Bootstrap and jQuery UI buttons., (*17)
elFinder file manager for Yii 2
MIT
yii2 widget elfinder file manager yii2-widgets yii2-framework