arter / yii2-filemanager
该包最新版本(1.0.0)没有提供许可信息。
Yii2文件管理器
1.0.0
2022-05-04 16:00 UTC
This package is auto-updated.
Last update: 2024-09-21 14:18:49 UTC
README
本模块提供接口,以便在统一位置收集和访问所有媒体文件。受WordPress文件管理器启发。
特性
- 与TinyMCE编辑器集成。
- 自动创建上传文件的当前目录,如"2014/12"。
- 自动为上传的图片创建缩略图。
- 无限数量的缩略图集。
- 所有媒体文件都存储在数据库中,允许您将对象附加到不链接到图像,而是链接到媒体文件的ID。这提供了更大的灵活性,因为将来很容易更改缩略图的大小。
- 如果更改缩略图大小,可以在设置中调整所有现有缩略图的大小。
截图
安装
安装此扩展的首选方式是通过composer。
运行以下命令:
php composer.phar require --prefer-dist pendalf89/yii2-filemanager "*"
或将其添加到您的composer.json
文件的require部分:
"pendalf89/yii2-filemanager": "*"
应用迁移
yii migrate --migrationPath=vendor/pendalf89/yii2-filemanager/migrations
配置
'modules' => [
'filemanager' => [
'class' => 'pendalf89\filemanager\Module',
// Upload routes
'routes' => [
// Base absolute path to web directory
'baseUrl' => '',
// Base web directory url
'basePath' => '@frontend/web',
// Path for uploaded files in web directory
'uploadPath' => 'uploads',
],
// Thumbnails info
'thumbs' => [
'small' => [
'name' => 'Мелкий',
'size' => [100, 100],
],
'medium' => [
'name' => 'Средний',
'size' => [300, 200],
],
'large' => [
'name' => 'Большой',
'size' => [500, 400],
],
],
],
],
默认情况下,缩略图以"outbound"或"fill"模式调整大小。要切换到"inset"或"fit"模式,请使用mode
参数并提供。可能的值:outbound
(\Imagine\Image\ImageInterface::THUMBNAIL_OUTBOUND
)或inset
(\Imagine\Image\ImageInterface::THUMBNAIL_INSET
)
'thumbs' => [
'small' => [
'name' => 'Мелкий',
'size' => [100, 100],
],
'medium' => [
'name' => 'Средний',
'size' => [300, 200],
],
'large' => [
'name' => 'Большой',
'size' => [500, 400],
'mode' => \Imagine\Image\ImageInterface::THUMBNAIL_INSET
],
],
使用方法
简单独立字段
use pendalf89\filemanager\widgets\FileInput;
echo $form->field($model, 'original_thumbnail')->widget(FileInput::className(), [
'buttonTag' => 'button',
'buttonName' => 'Browse',
'buttonOptions' => ['class' => 'btn btn-default'],
'options' => ['class' => 'form-control'],
// Widget template
'template' => '<div class="input-group">{input}<span class="input-group-btn">{button}</span></div>',
// Optional, if set, only this image can be selected by user
'thumb' => 'original',
// Optional, if set, in container will be inserted selected image
'imageContainer' => '.img',
// Default to FileInput::DATA_URL. This data will be inserted in input field
'pasteData' => FileInput::DATA_URL,
// JavaScript function, which will be called before insert file data to input.
// Argument data contains file data.
// data example: [alt: "Ведьма с кошкой", description: "123", url: "/uploads/2014/12/vedma-100x100.jpeg", id: "45"]
'callbackBeforeInsert' => 'function(e, data) {
console.log( data );
}',
]);
echo FileInput::widget([
'name' => 'mediafile',
'buttonTag' => 'button',
'buttonName' => 'Browse',
'buttonOptions' => ['class' => 'btn btn-default'],
'options' => ['class' => 'form-control'],
// Widget template
'template' => '<div class="input-group">{input}<span class="input-group-btn">{button}</span></div>',
// Optional, if set, only this image can be selected by user
'thumb' => 'original',
// Optional, if set, in container will be inserted selected image
'imageContainer' => '.img',
// Default to FileInput::DATA_IDL. This data will be inserted in input field
'pasteData' => FileInput::DATA_ID,
// JavaScript function, which will be called before insert file data to input.
// Argument data contains file data.
// data example: [alt: "Ведьма с кошкой", description: "123", url: "/uploads/2014/12/vedma-100x100.jpeg", id: "45"]
'callbackBeforeInsert' => 'function(e, data) {
console.log( data );
}',
]);
与TinyMCE一起使用
use pendalf89\filemanager\widgets\TinyMCE;
<?= $form->field($model, 'content')->widget(TinyMCE::className(), [
'clientOptions' => [
'language' => 'ru',
'menubar' => false,
'height' => 500,
'image_dimensions' => false,
'plugins' => [
'advlist autolink lists link image charmap print preview anchor searchreplace visualblocks code contextmenu table',
],
'toolbar' => 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | code',
],
]); ?>
在模型中,您必须设置媒体文件的行为,如下例所示
use pendalf89\filemanager\behaviors\MediafileBehavior;
public function behaviors()
{
return [
'mediafile' => [
'class' => MediafileBehavior::className(),
'name' => 'post',
'attributes' => [
'thumbnail',
],
]
];
}
然后,您可以从您的拥有模型中获取媒体文件。请参阅示例
use pendalf89\filemanager\models\Mediafile;
$model = Post::findOne(1);
$mediafile = Mediafile::loadOneByOwner('post', $model->id, 'thumbnail');
// Ok, we have mediafile object! Let's do something with him:
// return url for small thumbnail, for example: '/uploads/2014/12/flying-cats.jpg'
echo $mediafile->getThumbUrl('small');
// return image tag for thumbnail, for example: '<img src="/uploads/2014/12/flying-cats.jpg" alt="Летающие коты">'
echo $mediafile->getThumbImage('small'); // return url for small thumbnail