This is my Setting entity form,
class SettingType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('key')
->add('values', 'collection', array(
'allow_add' => true,
'allow_delete' => true,
))
->add('parent')
->add('settingCategory')
->add('user')
->add('settingOption')
;
$builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
$setting = $event->getData();
if ($parent = $setting->getParent()) {
$setting->setKey($parent->getKey());
$setting->setSettingCategory($parent->getSettingCategory());
$event->setData($setting);
}
});
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Acme\SettingBundle\Entity\Setting',
'csrf_protection' => false
));
}
/**
* @return string
*/
public function getName()
{
return 'setting';
}
}
I am submitting form data using REST POST request. e.g. for default application setting,
{
"setting" :
{
"key": "setting1",
"values": ["setting1va1", "setting1va2"],
"settingCategory": 1
}
}
Now to overrides this setting for user to choose different value
{
"setting" :
{
"values": ["setting1va1"],
"user":44319,
"parent": 1
}
}
so here as you can see in form, if parent is set, key and settingCategory is inherited from parent setting object.
I want 'key' and 'settingCategory' required (NotBlank) if parent is NULL but if parent is set, then 'key' and 'settingCategory' are not required fields.
How to do this in symfony ?