There is two part to your question. First the prefix prepended to the fields name and the fields name themselves.
To get rid of the prefix, use the trick described by @m2mdas if you are on 2.1
. If your not on 2.1
, your best bet is to create your form using createNamed
and give an empty name when creating the form. Something like this:
$this->formFactory->createNamed(new CustomType(), '', $data, $optionsArray);
Never tested this form in 2.0.x
but can confirm in 2.1
that having an empty name remove the field's prefix.
Where formFactory
is an instance of the FormFactory
service (@form.factory
).
For the fields, you can use custom name and tell Symfony where it should map the property. For that, you use the property_path
option. This will instruct symfony to map the property to this path instead of the default path. Here how you should use it in you form type when you define it:
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('a', 'text', array(
'property_path' => 'title',
));
$builder->add('b', 'text', array(
'property_path' => 'content',
));
}
Using this, when Symfony received the field a
from the POST data, it will map it to the property title
and vice-versa when the form is rendered. Your object will need a setTitle
method and a setContent
method.
Hope this helps.
Regards,
Matt