codex-team / editor.js
Editor.js的PHP后端实现
Requires
- php: >=5.6
- ezyang/htmlpurifier: ^4.8
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.13
- phpunit/phpunit: 5.4.*
This package is not auto-updated.
Last update: 2024-09-14 05:47:01 UTC
README
Editor.js的服务器端实现示例。它包含数据验证、HTML清理,并将Editor.js的输出转换为Block对象。
安装
使用composer安装lib
composer require codex-team/editor.js:dev-master
指南
在PHP脚本顶部添加此行
use \EditorJS\EditorJS;
此行允许您获取具有以下方法的编辑器类
getBlocks
- 返回清洗过的块数组
基本用法
您可以从编辑器中获取数据,并将其作为参数发送到编辑器的服务器验证器
try { // Initialize Editor backend and validate structure $editor = new EditorJS( $data, $configuration ); // Get sanitized blocks (according to the rules from configuration) $blocks = $editor->getBlocks(); } catch (\EditorJSException $e) { // process exception }
Editor.js构造函数有以下参数
$data
— 来自CodeX Editor前端的JSON字符串数据。
$configuration
— CodeX Editor工具配置的JSON字符串(参见以下段落的示例)。
配置文件
您可以手动配置不同类型Editor.js工具(标题、段落、列表、引用等)的验证规则。您还可以通过新工具扩展配置。
示例验证规则集
{
"tools": {
"header": {
"text": {
"type": "string",
"required": true,
"allowedTags": "b,i,a[href]"
},
"level": {
"type": "int",
"canBeOnly": [2, 3, 4]
}
}
}
}
其中
tools
— 支持的Editor.js工具数组。
header
— 定义header
工具设置。
text
和 level
— header
工具结构中的参数。
text
是一个必填
字符串,将除b
、i
和a[href]
标签外的其他内容清理。
level
是一个可选
整数,可以是0、1或2。
allowedTags
参数应遵循HTMLPurifier格式。
每个块有三个常见参数
type
(必填
) — 块的类型
allowedTags
(可选
) — 不会删除的字符串形式的HTML标签
其他值可根据HTMLPurifier格式进行设置。
示例
"paragraph": {
"text": {
"type": "string",
"allowedTags": "i,b,u,a[href]"
}
}
canBeOnly
(可选
) — 定义允许值的集合
示例
"quote": {
"text": {
"type": "string"
},
"caption": {
"type": "string"
},
"alignment": {
"type": "string",
"canBeOnly": ["left", "center"]
}
}
简短设置语法
添加了一些语法糖。
工具设置可以是string
。它定义了具有默认设置的工具体型。
"header": { "text": "string", "level": "int" }
它评估为
"header": { "text": { "type": "string", "allowedTags": "", "required": true }, "level": { "type": "int", "allowedTags": "", "required": true } }
工具设置可以是array
。它定义了一组未经清洗的允许值。
"quote": { "alignment": ["left", "center"], "caption": "string" }
它评估为
"quote": { "alignment": { "type": "string", "canBeOnly": ["left", "center"] }, "caption": { "type": "string", "allowedTags": "", "required": true } }
另一个配置示例:/tests/samples/syntax-sugar.json
嵌套工具
工具可以包含嵌套值。这可以通过array
类型实现。
假设JSON输入如下
{
"blocks": [
"type": list,
"data": {
"items": [
"first", "second", "third"
],
"style": {
"background-color": "red",
"font-color": "black"
}
}
]
}
我们可以在配置中为这个输入定义验证规则
"list": {
"items": {
"type": "array",
"data": {
"-": {
"type": "string",
"allowedTags": "i,b,u"
}
}
},
"style": {
"type": "array",
"data": {
"background-color": {
"type": "string",
"canBeOnly": ["red", "blue", "green"]
},
"font-color": {
"type": "string",
"canBeOnly": ["black", "white"]
}
}
}
}
其中data
是数组值的容器,而-
是如果数组是顺序的,则值的特殊快捷方式。
另一个配置示例:/tests/samples/test-config.json
异常
EditorJS类
BlockHandler类
ConfigLoader类
制作工具
如果您在前端连接了新的工具,那么您应该为该工具创建一个配置规则,以便在服务器端进行验证。
存储库
https://github.com/codex-editor/editorjs-php/
关于CodeX
我们是一支由圣彼得堡,俄罗斯伊福莫斯国立大学的在校生和毕业生组成的Web开发爱好者小团队。请随时通过[email protected]给我们反馈