jakharbek/yii2-filemanager

文件管理器

安装: 277

依赖者: 0

建议者: 0

安全: 0

星标: 5

关注者: 1

分支: 2

开放问题: 0

类型:yii2-extension

3.0.1 2019-05-14 10:26 UTC

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 访问文件管理器
如果您需要此控制器的操作,您可以通过查看此类的操作方法来使用它们。