romano83 / cakephp3-media
此包已被废弃,不再维护。未建议替代包。
此包最新版本(dev-master)没有提供许可信息。
CakePHP 3 媒体插件
dev-master
2015-12-17 20:53 UTC
This package is auto-updated.
Last update: 2022-02-28 17:53:09 UTC
README
关于
此插件的目标是让您能够在应用程序中创建和关联任何类型的媒体。此插件是Grafikart的Media Plugin针对CakePHP 3的适配版本。
概述
- 为您的模型提供BelongsTo和hasMany Media关联;
- 基于
dropzone.js
的拖放上传; - 集成
tinymce 4.2
和CKEditor 4.5
的图像上传器;
安装
要求
安装步骤
- 运行
composer require romano83/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
。
缩略图
如果您想为您的帖子添加缩略图,您必须在数据库的'Model'表中添加media_id
字段。
注意
为了上传图片,您应该在模型中实现 草稿系统。
待办事项
- 添加点击编辑媒体的能力;
- 添加调整大小、裁剪、翻转和旋转功能;
- 完成单元测试...
如何贡献
- 您发现了错误?您可以通过 问题 开启一个。
- 明确描述问题,包括如果是错误,重现步骤。
- 请确保填写您知道的最早版本存在问题的信息。
- 在问题中欢迎提供截图和代码示例。
- 您想实现新功能或修复错误?请遵循此指南
- 您的代码 必须遵循 CakePHP 编码规范。检查 cakephp-codesniffer 仓库以设置 CakePHP 标准。
- 您必须 添加测试用例 以测试您的新功能。测试用例确保应用在将来仍然可以正常工作。
- 您的 PR 应该在
dev
分支上。
特别感谢
- Grafikart 为此插件的第一个版本!