passchn/cakephp-file-pool

CakePHP的FilePool插件

安装: 39

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:cakephp-plugin

v0.3.3 2023-10-29 20:40 UTC

This package is auto-updated.

Last update: 2024-08-30 01:50:01 UTC


README

为您提供快速简单地将文件添加到实体的方法。

注意

这是对passchn/cakephp-assets插件的扩展。

功能

  • 适用于任何实体的无配置FilePool小部件(通过ViewHelper)
  • 可以在小部件内上传、排序、编辑或删除文件
  • 支持拖放上传多个文件
  • 您可以轻松控制访客是否可以上传、编辑或删除项目
  • 英文和德文翻译

先决条件

按照passchn/cakephp-assets的安装指南操作,并确保插件在您的应用程序中正常工作。

安装

您可以使用composer将此插件安装到您的CakePHP应用程序中。

安装composer包的推荐方法是

composer require passchn/cakephp-file-pool

然后,加载插件

bin/cake plugin load FilePool

在您的AppView.php中加载助手

$this->loadHelper('FilePool.FilePool');

运行迁移

bin/cake migrations migrate --plugin FilePool

... 或者将迁移复制到您的应用程序的迁移文件中。

用法

在模板中使用FilePool助手针对任何实体

<?= $this->FilePool->forEntity(
  $entity,
  title: 'File Pool',
  allowUpload: true,
  allowEdit: $currentUser->canEditFiles(),
) ?>

定义关系

您可以在您的ExamplesTable中轻松定义与实体的关系

$this->hasMany('Downloads', ['foreignKey' => 'owner_id'])
    ->setConditions(['owner_source' => 'Examples'])
    ->setClassName('FilePool.FilePoolAssets');

… 然后在控制器中包含Downloads.Assets后,通过$example->downloads访问文件。

故障排除

小部件未渲染

如果小部件未显示,请确保您在模板的某个地方获取了脚本

<?= $this->fetch('script') ?>

您可以通过配置'FilePool.ViewBlock'来更改插件使用的外观块,例如在您的app.php中。

重要

脚本应在html的末尾获取。样式将通过JavaScript加载。

小部件收到403响应(CSRF)

小部件的客户端使用CakePHP的默认csrf cookie名称(csrfToken)和header名称(X-CSRF-Token)。

如果您没有更改配置,请检查是否已将CsrfProtectionMiddleware配置为将httponly设置为false。这是必要的,因为否则JavaScript将无法访问cookie

->add(new CsrfProtectionMiddleware([
    'httponly' => false,
    // ...
]))

注意:如果您更改这些设置,请确保在浏览器开发工具中删除旧的csrfToken cookie。否则,由于旧的cookie被设置为httponly且不会自动替换,更改可能不会立即生效。

贡献

欢迎您提交问题或拉取请求。

如果您在安装或使用插件时遇到问题,请告诉我,我将更新故障排除部分。