我正在使用Contentful API PHP SDK library,并通过此API创建几个不同的 * 条目 *,这些条目将相互引用。
我可以创建不同的条目,可以编辑其中的文本字段,无论是在创建时还是创建后,我都可以编辑字段。但是,我不能做的是将条目相互引用。
就本期而言,这两种内容类型是:ContentType-A
和ContentType-B
,其中References
字段可以保存0个或多个引用(称为Components
)。
使用的代码如下所示:
// environmentProxy handles create/update
$environment = $this->client->getEnvironmentProxy($spaceId, $environmentId);
// creating ContentType-A Entry
$entry = new Entry('ContentType-A');
$entry->setField('title', 'en-US' , $title);
$environment->create($entry);
// test out if I can edit the previously created entry
// call newly created entry just in case their API is cached
$newlyCreatedEntryA = $environment->getEntry($entry->getId());
$newlyCreatedEntryA->setField('title' , 'en-US' , 'Some new title');
$newlyCreatedEntryA->update(); // I can verify that the entry title changed
// create ContentType-B Entry
$entry = new Entry('ContentType-B');
$entry->setField('title', 'en-US' , 'Content Type B - ' . $title);
$environment->create($entry);
$newlyCreatedEntryB = $environment->getEntry($entry->getId());
// try to reference ContentType-B into Components field in ContentType-A
// THIS IS WHERE I GET AN ERROR
$newlyCreatedEntryA->setField('Components', 'en-US', $newlyCreatedEntryB);
$newlyCreatedEntryA->update();
我收到了一个422错误。我已经用上面标注的变量替换了值,以确保值被正确放置。
Client error: `PUT https://api.contentful.com/spaces/{$spaceId}/environments/{$environmentId}/entries/{$newlyCreatedEntryA->getId()}` resulted in a `422 Unprocessable Entity` response:
{
{
"Error",
"id": "InvalidEntry"
},
"message": "Validation error",
其他检查,以了解它可能无法工作的原因:
1.认为这是一个缓存问题,所以在脚本的各个部分放入sleep(5)
以延迟并允许Contentful的系统得到更新。
1.在应用程序本身中验证新创建的内容是否存在
- SDK库本身中的输出值,并且我看到正在传递的对象
1.尝试手动发布两个条目并通过代码链接它们
1条答案
按热度按时间nc1teljy1#
显然,我尝试访问的端点当前不受支持。
相反,我遇到了this article,它引导我查看
PATCH
而不是PUT
,我可以使用Curl
添加条目。上述文章中的相关有用说明/代码:
您需要记住的一件新事情是-如果您正在使用curl,则必须跟踪正在更新的版本,否则可能会出现版本不匹配错误。