oks/yii2-filemanager

由 OKS Technologies 提供的文件管理器

安装: 77

依赖: 0

建议: 0

安全性: 0

类型:yii2-extension

dev-master 2018-10-22 21:39 UTC

This package is not auto-updated.

Last update: 2024-10-02 04:04:06 UTC


README

文件管理器

安装

安装此扩展的首选方式是通过 composer.

运行以下命令之一

php composer.phar require --prefer-dist oks/yii2-filemanager "*"

"oks/yii2-filemanager": "*"

将以下内容添加到您的 composer.json 文件的 require 部分。

使用方法

安装扩展后,只需在您的代码中通过以下方式使用它:

示例将基于帖子(Posts)

还需要执行迁移

yii migrate --migrationPath=@vendor/oks/yii2-filemanager/src/migrations

参数

您需要在 Yii 应用程序中创建两个参数:第一个是文件上传文件夹的相对路径

upload_dir_file

示例

@frontend/web/uploads/

第二个是文件上传文件夹的绝对路径 示例

upload_dir_file_src

示例

http://yoursite.domain/frontend/web/uploads/

main.php

需要连接 kartik-v/tree 模块

    'modules' => [
        ...
        'treemanager' =>  [
            'class' => '\kartik\tree\Module',
        ],
        ...
    ],

控制器

需要连接控制器

'controllerMap' => [
        ...
        'files' => 'oks\filemanager\controllers\FilesController'
        ...
    
    ],

连接

通过关联表

首先,您需要为 viaTable 创建关联表并配置关联,例如,您需要连接帖子照片并创建一个表

 postsimagespasters
 ------------------
 post_id*
 file_id
 sort
 -----------------
 * это ваша таблца
 sort - для сортировка

在主模型表(Posts)中创建该表的关联

    public function getPostsimagesposters()
    {
        return $this->hasMany(Postsimagesposter::className(), ['post_id' => 'post_id']);
    }

    public function getimagesposters()
    {
        return $this->hasMany(Files::className(), ['file_id' => 'file_id'])->viaTable('postsimagesposter', ['post_id' => 'post_id']);
    }

需要在表单输入中创建一个属性来收集表单数据。


class Posts{
    
    ...
    
    private $_postsimagespostersdata;
    
    ...
    
    
    
    public function getpostsimagespostersdata(){
        return $this->_postsimagespostersdata;
    }
    public function setpostsimagespostersdata($value){
        return $this->_postsimagespostersdata = $value;
    }

}
 

行为

use oks\filemanager\behaviors\FileModelBehavior;
 'file_manager_model' => [
                'class' => FileModelBehavior::className(),
                'attribute' => 'postsimagespostersdata',
                'relation_name' => 'imagesposters',
                'delimitr' => ',',
                'via_table_name' => 'postsimagesposter',
                'via_table_relation' => 'postsimagesposters',
                'one_table_column' => 'post_id',
                'two_table_column' => 'file_id'
            ],

信息

  /**
     * @var string имя атрибута откуда брать информацию из формы
     */
    public $attribute = "postsimagespostersdata";
    /**
     * @var string имя свзяи
     */
    public $relation_name = "imagesposters";
    /**
     * @var string разделителсь информация
     */
    public $delimitr = ",";
    /**
     * @var string имя связуюший таблице (как в базе данных)
     */
    public $via_table_name = "postsimagesposter";
    /**
     * @var string имя связи связуюший таблице
     */
    public $via_table_relation = "postsimagesposters";
    /**
     * @var string имя поля первечного ключа первый таблице
     */
    public $one_table_column = "post_id";
    /**
     * @var string имя поля первечного ключа первый таблице
     */
    public $two_table_column = "file_id";

小部件

现在您可以为选择数据连接小部件。

echo oks\filemanager\widgets\InputWidget::widget([
    'model_db' => $model,
    'form' => $form,
    'attribute' => 'Posts[postsimagespostersdata]',
    'id' => 'imagesposters',
    'relation_name' => 'imagesposters',
    'via_relation_name' => 'postsimagesposters',
    'delimitr' => ','
]);

信息

 /**
     * @var string произволная строка для идентификации
     */
    public $id = "filemanager1";
    /**
     * @var ActiveForm ваша форма
     */
    public $form;
    /**
     * @var ActiveRecord ваша модель базы данных.
     */
    public $model_db;
    /**
     * @var string атрибут формы интупа который будет возврашать запрос по посту
     *  <input name="атрибут" />
     */
    public $attribute;
    /**
     * @var string имя действие контроллера если вы его изменили
     */
    public $controller = "/files/uploads/";
    /**
     * @var string имя действие контроллера если вы его изменили
     */
    public $list = "/files/list/";
    /**
     * @var string имя действие контроллера если вы его изменили
     */
    public $deleteurl = "/files/remove/";
    /**
     * @var string разделитель данных;
     */
    public $delimitr = ",";
    /**
     * @var string имя связи связуешей таблице
     */
    public $relation_name = "imagesposters";
    /**
     * @var stringи имя связи к таблице связи
     */
    public $via_relation_name = "postsimagesposters";
    /**
     * @var array имя расшерение для фоток
     */
    public $pictures_ext = ['png','jpg','jpeg','gif','bmp'];
    /**
     * @var array имя расшерение для аудио
     */
    public $music_ext = ['mp3'];
    /**
     * @var array имя расшерение для видео
     */
    public $video_ext = ['mp4','flv'];

在不使用关联表的情况下使用

通过 InputWidget

\oks\filemanager\widgets\InputModalWidget::widget(['form' => $form,
                'attribute' => 'files',
                'id' => 'files_id_asdsdasdsad',
                'values' => '',
                'value_encode' => true
            ]);

在 CKEditor 中使用

     <?php  echo \oks\filemanager\widgets\ModalWidget::widget(); ?>
            <?= $form->field($model, 'description')->widget(CKEditor::className(), [
                'options' => ['rows' => 6],
                'clientOptions'=>[
                    'extraPlugins' => 'filemanager-oks',
                    'justifyClasses'=>[ 'AlignLeft', 'AlignCenter', 'AlignRight', 'AlignJustify' ],
                    'height'=>200,
                    'toolbarGroups' => [
                        ['name' => 'filemanager-oks']
                    ],
                ],
                'preset' => 'short'
            ]) ?>
            <?= $form->field($model, 'content')->widget(CKEditor::className(), [
                'options' => ['rows' => 6],
                'clientOptions'=>[
                    'extraPlugins' => 'filemanager-oks',
                    'justifyClasses'=>[ 'AlignLeft', 'AlignCenter', 'AlignRight', 'AlignJustify' ],
                    'height'=>200,
                    'toolbarGroups' => [
                        ['name' => 'filemanager-oks']
                    ],
                ],
                'preset' => 'full'
            ]) ?>