gpt4 book ai didi

json - 如何使用 JMSSerializer 将 Symfony 中的表单错误作为 JSON 对象获取

转载 作者:行者123 更新时间:2023-12-01 05:04:19 25 4
gpt4 key购买 nike

对于我拥有的任何表单,我都需要有一个通用的 JSON 错误表示。

我已经阅读了其他解决方案,例如 how to return json encoded form errors in symfony .但是我不想为已经可以由我连接到我的项目的其他包解决的任务再创建一项服务。

我用 JMSSerializerBundle在我的项目中,我知道这个包可以使用 FormErrorHandler 处理 Symfony 表单错误。 .但现在我只能得到整个表单序列化:

$errors = $form->getErrors();
$serializer = $this->get('jms_serializer');
$json = $serializer->serialize($errors, 'json');

此代码将返回我下一个 JSON 对象:
{
"form": {
"children": {
"field1": [],
"field2": [],
"field_with_error": {
"errors": ["Error text"]
},
"collection": {
"child_form": [
{
"children": {
"field1": [],
"field2": []
}
}
]
}
}
},
"errors": []
}

但我需要这样的东西(只有有错误的字段):
{
"field_with_error": {
"errors": ["Error text"]
}
}

我怎样才能做到这一点?我查看了已经解决了这个问题的 FOSRestBundle。但我没有找到他们是如何做到的。

最佳答案

使用以下代码,您可以获得与您想要的相同结构的错误:

$handler = new FormErrorHandler($this->get('translator'));
$visitor = new JsonSerializationVisitor(new SerializedNameAnnotationStrategy(new CamelCaseNamingStrategy()));
$errors = json_encode($handler->serializeFormToJson($visitor, $editForm, array()));

结果
"{"children":{"title":{"errors":["This value should not be blank."]},"summary":{"errors":["Give your post a summary!"]},"content":{"errors":["Your post should have some content!"]}}}"

关于json - 如何使用 JMSSerializer 将 Symfony 中的表单错误作为 JSON 对象获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28147621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com