todi1979/cakephp3-media-plugin

CakePHP 3 的媒体插件

安装次数: 124

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 1

语言:JavaScript

类型:cakephp-plugin

1.5.1 2019-08-15 06:49 UTC

This package is auto-updated.

Last update: 2024-09-14 08:45:47 UTC


README

Build Status Coverage Status

关于

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

概览

安装

要求

安装步骤

  • 运行
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为本插件的第一版提供支持!