1

我已经广泛搜索了这个问题的答案,联系了内容支持(并被忽略)并尝试了我能想到的每一种排列方式。任何帮助,将不胜感激。

我想通过内容丰富的管理 sdk 与 RichText 内容创建一个新条目。

二传手:

$entry->setField('rtf', 'en-GB', file_get_contents('content-blocks/rtf/zzz.rtf'));

该文件的内容是:

{
  "nodeType": "document",
  "data": {},
  "content": [
    {
      "nodeType": "paragraph",
      "content": [
        {
          "nodeType": "text",
          "value": "Test text",
          "marks": [],
          "data": {}
        }
      ],
      "data": {}
    }
  ]
}

我也尝试过直接输入内容、去除空格等。这个 json 块也是从 contentfuls 自己的降价到富文本转换器生成的。

响应:

{\n
  "sys": {\n
    "type": "Error",\n
    "id": "InvalidEntry"\n
  },\n
  "message": "Validation error",\n
  "details": {\n
    "errors": [\n
      {\n
        "name": "type",\n
        "value": "{\n  \"nodeType\": \"document\",\n  \"data\": {},\n  \"content\": [\n    {\n      \"nodeType\": \"paragraph\",\n      \"content\": [\n        {\n          \"nodeType\": \"text\",\n          \"value\": \"Test text\",\n          \"marks\": [],\n          \"data\": {}\n        }\n      ],\n      \"data\": {}\n    }\n  ]\n}\n",\n
        "type": "RichText",\n
        "details": "The type of \"value\" is incorrect, expected type: RichText",\n
        "path": [\n
          "fields",\n
          "rtf",\n
          "en-US"\n
        ]\n
      }\n
    ]\n
  },\n
  "requestId": "a603e57d716b7af9c5c8078f2701fc41"\n
}\n

这种情况的文档不存在,因此您可以提供任何帮助将不胜感激。

4

1 回答 1

0

这是一个老问题,但如果有人偶然发现它,有一个封闭的 Github 问题包含答案。

通过 PHP SDK #160 将 HTML 字符串转换为 RichText

还有一个结构更简化的示例:

$bodyValue = [
        'data' => [],
        'content' => [
            [
                'nodeType' => 'paragraph',
                'content' => [
                    [
                        'nodeType' => 'text',
                        'data' => [],
                        'value' => 'Hello, is it me you\'re looking for?',
                        'marks' => [
                            ['type' => 'code'],
                        ],
                    ],
                ],
                'data' => [],
            ],
        ],
        'nodeType' => 'document',
    ];

    $entry->setField('rtf', 'en-GB', $bodyValue);
于 2021-12-01T12:17:35.817 回答