你的问题有两个部分。首先是字段名称前面的前缀和字段名称本身。
要摆脱前缀,请使用@m2mdas 描述的技巧,如果您在2.1
. 如果您不在2.1
,最好的办法是使用创建表单createNamed
并在创建表单时提供一个空名称。像这样的东西:
$this->formFactory->createNamed(new CustomType(), '', $data, $optionsArray);
从未测试过此表单,2.0.x
但可以确认2.1
使用空名称删除字段的前缀。
formFactory
服务的实例在哪里FormFactory
( @form.factory
)。
对于字段,您可以使用自定义名称并告诉 Symfony 它应该在哪里映射属性。为此,您使用该property_path
选项。这将指示 symfony 将属性映射到这个路径而不是默认路径。在这里定义它时应该如何在表单类型中使用它:
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('a', 'text', array(
'property_path' => 'title',
));
$builder->add('b', 'text', array(
'property_path' => 'content',
));
}
使用这个,当 Symfonya
从 POST 数据中接收到字段时,它会将其映射到属性title
,反之亦然。您的对象将需要一个setTitle
方法和一个setContent
方法。
希望这可以帮助。
问候,
马特