Php JMSSerializer+;表格/数组

Php JMSSerializer+;表格/数组,php,symfony,symfony-2.2,jmsserializerbundle,Php,Symfony,Symfony 2.2,Jmsserializerbundle,我是SF2社区的新成员,所以请不要紧张;) 我遇到了JMSSerializerBundle和表单/数组的问题。我花了两天时间自己想办法解决这个问题,但没有成功,我决定把这个帖子发到小组里 我正在构建一个简单的测试应用程序,让我能够理解这些东西是如何工作的。现在是API的时候了。我用的是FOSRestBundle,非常好用。我的整个“应用程序”工作得非常完美(开发非常快速有效),我学会了如何使用安全组件、防火墙、路由、条令(尽管我过去使用过它),编写自定义身份验证提供程序——事实上,我被困在API

我是SF2社区的新成员,所以请不要紧张;)

我遇到了JMSSerializerBundle和表单/数组的问题。我花了两天时间自己想办法解决这个问题,但没有成功,我决定把这个帖子发到小组里

我正在构建一个简单的测试应用程序,让我能够理解这些东西是如何工作的。现在是API的时候了。我用的是FOSRestBundle,非常好用。我的整个“应用程序”工作得非常完美(开发非常快速有效),我学会了如何使用安全组件、防火墙、路由、条令(尽管我过去使用过它),编写自定义身份验证提供程序——事实上,我被困在API中,这是它的一部分

表格发行: 我已经在APIBundle中创建了simple ArticleController(请忽略文本响应,我只是在调试时删除了代码以使其更具可读性):

如您所见,我还有一个ArticleType表单类:

namespace Veron\ApiBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class ArticleType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title')
            ->add('description')
        ;
    }
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class'        => 'Veron\CoreBundle\Entity\Article',
            'csrf_protection'   => false,
        ));
    }
    public function getName()
    {
        return 'article';
    }
}
问题是什么?在以XML或JSON格式发送请求时(当表单数据未被验证时),我收到了错误(由JMSSerializer进行了良好的格式化):

JSON示例:

{"errors":["This value should not be blank."],"children":{"title":{"errors":["This value is too short. It should have 5 character or more."]},"description":{"errors":["This value should not be blank."]}}}
XML示例:

<?xml version="1.0" encoding="UTF-8"?>
<form name="article">
  <errors>
    <entry><![CDATA[This value should not be blank.]]></entry>
  </errors>
  <form name="title">
    <errors>
      <entry><![CDATA[This value should not be blank.]]></entry>
    </errors>
  </form>
  <form name="description">
    <errors>
      <entry><![CDATA[This value should not be blank.]]></entry>
    </errors>
  </form>
</form>

我的第一个问题是:是否有任何自动方式来更改序列化表单错误的输出

我也有一个问题,我想与第一个有关。当返回单个对象时,我返回了以下XML结构:

<article>
    <id>10</id>
    <title>Test article</title>
</article>

10
供试品
返回数组(多个项目)时,输出为:

<result>
    <entry>
        <id>1</id>
        ...
    </entry>
    <entry>
        <id>10</id>
        ...
    </entry>
</result>

1.
...
10
...

第二个问题:如何更改响应XML/JSON结构

使用JMSSerializer呈现表单错误由以下类处理:。你可以自己写


关于结构,是的,你可以改变它,但你到底想做什么?您可以查看文档以了解更多信息:(注意,您也可以使用xml/yml配置,但文档在注释上更完整)

您只需将注释更改为xmllist:

@Serializer\XmlList(inline = true, entry = "article")

谢谢你的回复。我想要实现什么?如果出现表单错误,我希望使用简单的结构:
值不应为空。序列化数组也是如此,我希望将
作为XML根元素,并将
作为其子元素。居者有其屋这些问题是以Symfony 2方式解决的吗?
@Serializer\XmlList(inline = true, entry = "article")