romano83/cakephp3-media

此包已被废弃,不再维护。未建议替代包。
此包最新版本(dev-master)没有提供许可信息。

CakePHP 3 媒体插件

安装: 502

依赖: 0

建议者: 0

安全: 0

星标: 6

关注者: 4

分支: 4

开放问题: 5

语言:JavaScript

类型:cakephp-plugin

dev-master 2015-12-17 20:53 UTC

This package is auto-updated.

Last update: 2022-02-28 17:53:09 UTC


README

Build Status Coverage Status

关于

此插件的目标是让您能够在应用程序中创建和关联任何类型的媒体。此插件是Grafikart的Media Plugin针对CakePHP 3的适配版本。

概述

  • 为您的模型提供BelongsTo和hasMany Media关联;
  • 基于dropzone.js的拖放上传;
  • 集成tinymce 4.2CKEditor 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 为此插件的第一个版本!