炭黑 / 附件
炭黑附件模块
Requires
- php: ^7.4 || ^8.0
- charcoal/config: ^5.0
- charcoal/core: ^5.0
- charcoal/object: ^5.0
- charcoal/translator: ^5.0
Requires (Dev)
- charcoal/admin: ^5.0
- mockery/mockery: ^1.0
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
Suggests
- charcoal/admin: To use the attachment widgets, actions, and scripts.
Replaces
- dev-main / 5.x-dev
- v5.0.0
- v4.1.0
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.2
- v4.0.1
- v4.0.0
- v3.1.8
- v3.1.7
- v3.1.6
- v3.1.5
- v3.1.4
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.2
- 0.10.7
- 0.10.6.1
- 0.10.6
- 0.10.5.3
- 0.10.5.2
- 0.10.5.1
- 0.10.5
- 0.10.4.2
- 0.10.4.1
- 0.10.4
- 0.10.3.1
- 0.10.3
- 0.10.2
- 0.10.1.4
- 0.10.1.3
- 0.10.1.2
- 0.10.1.1
- 0.10.1
- 0.10.0.2
- 0.10.0.1
- 0.10.0
- 0.9.3.1
- 0.9.3
- 0.9.2
- 0.9.1.1
- 0.9.1
- 0.9.0
- 0.8.3
- 0.8.2
- 0.8.1
- 0.8
- 0.7.5
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1.3
- 0.7.1.2
- 0.7.1.1
- 0.7.1
- 0.7
- 0.6.2
- 0.6.1.2
- 0.6.1.1
- 0.6.1
- 0.6
- 0.5.2
- 0.5.1
- 0.5
- 0.4.2.1
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.0
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2
- 0.1
- dev-fix/backend-active
- dev-feature/camelizePropertiesAndUseArrayAccess
- dev-mducharme-dev
- dev-joel-attachment-update
- dev-mcaskill-labeller
This package is auto-updated.
Last update: 2024-09-13 16:14:29 UTC
README
附件包提供了处理模型之间关系支持的功能。
安装
composer require charcoal/attachment
概述
该包还提供了一组基本的附件:文档、嵌入、图片、画廊、链接视频等。
对象
附件包中的对象扩展了来自charcoal/object的Content
,它是一个来自charcoal/core的AbstractModel
。
除了Content
默认提供的元数据外,以下属性对所有Attachment
对象是默认的
标准属性(由所有附件对象使用)
专用属性,其使用方式可能因上下文而异
所有附件都假定有title
(标题)、subtitle
(副标题)、description
(描述)和keywords
(关键词)。一些附件也
阅读charcoal/object文档,了解
Content
对象提供的其他默认属性(以及RevisionableInterface
)。
阅读charcoal/core文档,了解
AbstractModel
提供的其他默认属性(以及DescribableInterface
和StorableInterface
)。
附件对象的类型
- 手风琴
- 一个
Container
(分组)附件,用于手风琴类型的显示。 - 默认支持
text
、image
、gallery
和embed
附件。
- 一个
- 附件
- 最通用的附件,可以是任何东西。
- Container
- 基本的“分组”附件。
- 嵌入
- 嵌入内容,通常是视频嵌入代码。
- 强制
file
属性为image
,并将description
强制为html
。
- 文件
- 可上传的文档。
- 链接
- 一个URL(资源的链接)。
- 图片
- 可上传的图片
- 强制
file
属性为image
。
- 画廊
- 一个
Container
(分组)附件,用于多个图片的画廊。 - 仅限于
image
附件。
- 一个
- 文本
- 文本(HTML)内容。
- 视频
小部件
该包提供自己的命名空间为Charcoal\Admin
的admin小部件。
附件小部件可以在表单中使用多次。为了正确工作,您需要为每个实例化的小部件定义一个不同的组标识group
。
"attachment": { "type": "charcoal/admin/widget/attachment", "group": "main" }
在这种情况下,我们将组设置为“main”。如果没有定义,则默认组为“generic”。没有这些标识,小部件将无法知道哪些附件属于它们。
然后,您可以调用对象的“attachments(group_ident)”方法来访问特定的“group”附件。在这种情况下,$object->attachments('main')
将返回与设置了“main”组的 widgets 相关的附件。
配置
将视图路径和元数据路径添加到配置文件中。
"metadata": { "paths": [ "...", "vendor/charcoal/attachment/metadata/" ] }, "view": { "paths": [ "...", "vendor/charcoal/attachment/templates/" ] }, "translations": { "paths": [ "...", "vendor/charcoal/attachment/translations/" ] }
然后,我们需要在admin.json配置文件中添加小部件所需的必要路由。
"routes": { "actions": { "join": { "ident": "charcoal/admin/action/join", "methods": [ "POST" ] }, "add-join": { "ident": "charcoal/admin/action/add-join", "methods": [ "POST" ] }, "remove-join": { "ident": "charcoal/admin/action/remove-join", "methods": [ "POST" ] } } }
用法
您需要使您的对象(们)“Attachment Aware”,以便它知道它可以有附件。为此,请使用/实现attachmentAware
use Charcoal\Attachment\Traits\AttachmentAwareTrait; use Charcoal\Attachment\Interfaces\AttachmentAwareInterface;
然后,只需将小部件添加到编辑仪表板或表单中,如下所示
"attachment": { "title": "Documents", "type": "charcoal/admin/widget/attachment", "group": "main", "attachable_objects": { "charcoal/attachment/object/file": { "label": "Document / File" } } }
当前模块提供的可用附件对象有
charcoal/attachment/object/image
charcoal/attachment/object/gallery
charcoal/attachment/object/file
charcoal/attachment/object/link
charcoal/attachment/object/text
charcoal/attachment/object/video
要创建新的附件,您需要扩展基本附件对象 charcoal/attachment/object/attachment
并提供一个“快速”表单。
在删除对象时,为了删除不必要的关联,您需要将此添加到您的对象中
public function preDelete() { // AttachmentAwareTrait $this->removeJoins(); return parent::preDelete(); }
附件创建
关于附件,您需要知道的是,它全部在一个表中。如果它们不是 attachments
,则无法将自定义对象与其他对象关联。
那么,您如何创建新的附件呢?这完全取决于您的需求。
添加或修改属性
如果您需要向现有附件添加属性,您始终可以扩展它。假设您想更改与附件一起提供的描述字段的编辑器选项。第一步是创建一个新的对象来扩展现有的对象。
/** * Extended text class. */ namespace My\Namespace; use Charcoal\Attachment\Object\Text as AttachmentText; class Text extends AttachmentText { }
现在我们已经扩展了对象,让我们通过创建一个 my/namespace/text.json
文件来向JSON中添加内容。
{ "properties": { "description": { "editor_options": { "style_formats": [], "body_class": "s-wysiwyg", "content_css": "../../../../../styles/main.css" } } }, "data": { "type": "my/namespace/text" } }
在这种情况下,编辑器选项被更改以删除基本样式格式,更改主体类并添加适当的CSS。重要的是要将数据类型设置为当前对象。这在实时编辑和删除功能中使用。
如果您添加了一些额外的属性,您可以使用ALTER脚本将它们添加到表中。
vendor/bin/charcoal admin/object/table/alter --obj-type=my/namespace/text
注意
不要在mustache模板中直接使用“attachments”方法。这将返回所有附件,不考虑分组。
在后台小部件中附件预览的自定义模板已在待办事项列表中。
其他操作,如快速查看,也已在待办事项列表中。
资源
- 贡献
- 报告问题 和 发送拉取请求 在 Charcoal的主要存储库