以Symfony2格式删除表单命名空间(对于REST API)

Gil*_*les 3 php rest symfony

我正在使用Symfony2设计REST API.

对于POST和PUT请求,我使用的是FormType.就像是 :

class EmailType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('subject', 'textarea')
        [...]
        ;
    }

    public function getName()
    {
        return 'email';
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我发布POST时,我必须传递具有名称空间的字段:

{
    "email": {
        "subject": "subject"
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不想要这个顶级命名空间!

有任何想法吗 ?

Eln*_*mov 7

表单类型必须具有名称,因为如果将其注册为标记为表单类型的服务,则需要以某种方式引用它.在以下代码段中,email是表单类型的名称:

$form = $this->formFactory->create('email', $email);
Run Code Online (Sandbox Code Playgroud)

这就是为什么你必须在表单类型类中返回一个名称:

public function getName()
{
    return 'email';
}
Run Code Online (Sandbox Code Playgroud)

因此,不是创建没有名称的表单类型,而是创建一个表单 - 该表单类型的特定实例- 使用空名称:

$form = $this->formFactory->createNamed(null, 'email', $email);
Run Code Online (Sandbox Code Playgroud)

一个空字符串 - ''- 而不是null工作.