todi1979 / cakephp3-media-plugin
CakePHP 3 的媒体插件
1.5.1
2019-08-15 06:49 UTC
This package is auto-updated.
Last update: 2024-09-14 08:45:47 UTC
README
关于
此插件的目标是让您能够在应用程序中创建和关联任何类型的媒体。此插件是从Grafikart的Media插件针对CakePHP 3进行的适配。
概览
- 为您的模型提供BelongsTo和hasMany媒体关联;
- 使用基于dropzone.js的拖放上传;
- 与tinymce 4.2和CKEditor 4.5集成的图像上传器;
安装
要求
安装步骤
- 运行
composer require todi1979/cakephp3-media
- 将文件
config\schema\medias.sql
导入您的数据库
使用方法
在您的config\bootstrap.php
文件中,添加以下行
Plugin::load('Media', ['bootstrap' => false, 'routes' => true]);
安全目的
默认情况下,该插件对所有人都是禁止的。为了设置适当的权限,您可以在您的YourApp\AppController
中实现canUploadMedia()方法。例如
public function canUploadMedias($model, $id){ if($model === 'YourApp\Model\Table\UsersTable' && $id == $this->Auth->user('id')){ return true; // Everyone can upload medias for their own records } return $this->Auth->user('role') == 'admin'; // Admins have all rights }
行为
要使用此插件,您必须在您的表中加载MediaBehavior
。例如,如果您想管理文章的媒体
<?php namespace MyApp\Model\Table; use Cake\ORM\Table; class PostsTable extends Table { public function initialize(array $config) { $this->addBehavior( 'Media.Media', [ 'path' => 'img/upload/%y/%m/%f', // default upload path relative to webroot folder (see below for path parameters) 'extensions' => ['jpg', 'png'], // array of authorized extensions (lowercase) 'limit' => 0, // limit number of upload file. Default: 0 (no limit) 'max_width' => 0, // maximum authorized width for uploaded pictures. Default: 0 (no limitation) 'max_height' => 0, // maximum authorized height for uploaded pictures. Default: 0 (no limitation) 'size' => 0 // maximum autorized size for uploaded pictures (in kb). Default: 0 (no limitation) ] ); } }
对于路径选项,您有多个参数
- %y 年
- %m 月
- %f 转换后的文件名
- %id 媒体ID
- %cid 媒体ID /100
- %mid 媒体ID /1000
辅助工具
为了在您的视图中添加媒体上传和编辑功能,您可以使用MediaHelper
。
为此,请在您的AppController
中添加以下内容
<?php namespace App\Controller; class AppController extends Controller { public $helpers = ['Media.Media']; }
或在其AppView
中
<?php namespace App\View; class AppView extends View { public function initialize() { $this->loadHelper( 'Media.Media' ); } }
例如,您可以在iframe中添加媒体管理
<?= $this->Media->iframe('Model', 'ID'); ?>
或者您可以在表单内添加文本编辑器(例如tinymce)
<?= $this->Form->create(); ?> <?= $this->Media->tinymce($fieldname, 'Model', 'Id', array $options); ?> <?= $this->Form->end(); ?>
此方法接受与原生FormInput
辅助工具相同的array $options
。
缩略图
如果您想为文章添加缩略图,您必须在'模型'数据库表中添加media_id
字段。
注意
为了上传图片,您应该在模型中实现草稿系统。
待办事项
- 添加点击时编辑媒体的功能;
- 添加调整大小、裁剪、翻转和旋转功能;
- 完成单元测试...
如何贡献
- 如果您发现了一个错误,您可以打开一个问题
- 清楚地描述问题,包括当它是错误时的复现步骤。
- 确保您填写了您知道有问题的最早版本。
- 问题中的截图和代码示例是受欢迎的。
- 如果您想实现一个新功能或修复一个错误,请遵循此指南
- 您的代码必须遵循CakePHP编码标准。检查cakephp-codesniffer存储库以设置CakePHP标准。
- 您必须为您的新的功能添加测试用例。测试用例确保应用程序在未来将继续工作。
- 您的PR应该提交到
dev
分支。
特别感谢
- Grafikart为本插件的第一版提供支持!