jakharbek / yii2-filemanager
文件管理器
Requires
- 2amigos/yii2-ckeditor-widget: ^2.1
- kartik-v/yii2-editable: v1.7.8
- kartik-v/yii2-sortable-input: v1.2.1
- kartik-v/yii2-widget-fileinput: v1.0.9
- yiisoft/yii2: ~2.0.0
- yiisoft/yii2-imagine: ~2.1.0
- yiisoft/yii2-queue: ^2.0
- yiisoft/yii2-redis: ~2.0.0
This package is not auto-updated.
Last update: 2024-09-20 20:11:01 UTC
README
文件管理器
安装
安装此扩展的首选方法是使用 composer。
运行
php composer.phar require --prefer-dist jakharbek/yii2-filemanager "*"
或添加
"jakharbek/yii2-filemanager": "*"
到您的 composer.json
文件的 require 部分中。
使用
扩展安装后,只需在您的代码中通过
迁移
您需要执行迁移
yii migrate --migrationPath=@vendor/jakharbek/yii2-filemanager/src/migrations
模块
您需要连接后端应用的部分模块。\jakharbek\filemanager\backend\Module
'modules' => [ 'files' => \jakharbek\filemanager\backend\Module::class ],
参数
您需要在文件中添加参数到应用程序中。例如
[ 'thumbs' => [ 'icon' => [ 'w' => 50, 'h' => 50, 'q' => 50, 'slug' => 'icon' ], 'small' => [ 'w' => 320, 'h' => 320, 'q' => 50, 'slug' => 'small' ], 'low' => [ 'w' => 640, 'h' => 640, 'q' => 50, 'slug' => 'low' ], 'normal' => [ 'w' => 1024, 'h' => 1024, 'q' => 50, 'slug' => 'normal' ] ], 'images_ext' => [ 'jpg', 'png', 'bmp', 'gif' ], 'use_file_name' => true, 'use_queue' => false, 'file_not_founded' => '14', //'file_not_founded' => 'http://img.domain.loc/files/1.jpg'
thumbs
- 缩略图图像
images_ext
- 图像扩展
use_file_name
- 上传文件时,是否使用文件名进行文件下载或创建哈希值
use_queue
- 上传文件时,是否需要使用队列在后台模式加载一些照片?
应用 DI (依赖注入)
有一个类 \jakharbek\filemanager\bootstrap\SetUp
,您需要将其应用到应用的初始下载中,例如。
'bootstrap' => [ \jakharbek\filemanager\bootstrap\SetUp::class ],
使用方式
有两种使用方式,您可以使用数据库中的关系或表中的列
通过关系使用方法
假设您有一个连接表,例如
post_image
------------------
post_id
file_id
sort
-----------------
并且假设您在 Active Record 中有适当的关联方法
public function getPostImages() { return $this->hasMany(PostImage::className(), ['post_id' => 'post_id']); } public function getImages() { return $this->hasMany(Files::className(), ['file_id' => 'file_id'])->viaTable('postImages', ['post_id' => 'post_id']); }
现在您需要为这种情况应用特殊的 jakharbek\filemanager\behaviors\FileRelationBehavior
行为。
例如
'file_relation_image' => [ 'class' => FileRelationBehavior::class, 'delimtr' => ',', 'attribute' => 'file_image' ],
您需要创建一个属性,用于在表单和模型之间交换数据,如果在找到 file_image
public $file_image
或
private $_file_image; public function getFileImage(){ return $this->$_file_image; } public function setFileImage($value){ return $this->$_file_image = $value; }
接下来,您需要将此属性 file_image
添加到模型的规则中,作为 safe
。例如
public function rules() { return [ [['file_image'], 'safe']], ]; }
现在您可以为该字段应用文件加载/上传小部件 jakharbek\filemanager\widgets\FileInput
。
例如
<?php use \jakharbek\filemanager\widgets\FileInput;?> <?= $form->field($model, 'file_image')->widget(FileInput::class,[ 'id' => 'file_image_id' ]) ?>
不使用连接表使用
我假设您已经在表中为存储文件标识符添加了字段。该列的类型应该是字符串,因为文件标识符将通过分隔符存储在那里,例如,我们为帖子表有图像列
在这种情况下,您可以直接使用小部件而无需任何模型设置。
例如
use \jakharbek\filemanager\widgets\FileInput; echo FileInput::widget(['id' => 'post_images_id']);
在 CKEditor 中使用
要使用编辑器中的文件管理器插件,您需要在设置中指定此插件,如示例所示。例如
<?php echo $form->field($model, 'description')->widget(CKEditor::className(), [ 'options' => ['rows' => 6], 'clientOptions'=>[ 'extraPlugins' => 'filemanager-jakhar', 'justifyClasses'=>[ 'AlignLeft', 'AlignCenter', 'AlignRight', 'AlignJustify' ], 'height'=>200, 'toolbarGroups' => [ ['name' => 'filemanager-jakhar'] ], ], 'preset' => 'short' ]); ?>
然后您需要运行一次此代码,以便在编辑器中点击按钮时启动一个模态窗口
<?=\jakharbek\filemanager\widgets\FileInput::widget(['id' => 'fileManagerEditor','editor' => true]);?>
助手
您需要帮助 jakharbek\filemanager\helpers\FileManagerHelper 类。据我所知,您将经常使用以下方法:FileManagerHelper::getFilesById
API
此扩展有一个 API,您可以通过它连接并通过 API jakharbek\filemanager\api\FilesController
访问文件管理器
如果您需要此控制器的操作,您可以通过查看此类的操作方法来使用它们。