Это моя форма настройки сущности,Как выполнить проверку условной формы, которая основана на данных пользователя, представленных в symfony2?
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';
}
}
Я вношу данные формы запроса REST POST. например для установки приложений по умолчанию,
{
"setting" :
{
"key": "setting1",
"values": ["setting1va1", "setting1va2"],
"settingCategory": 1
}
}
Теперь переопределяет этот параметр для пользователя, чтобы выбрать другое значение
{
"setting" :
{
"values": ["setting1va1"],
"user":44319,
"parent": 1
}
}
так вот, как вы можете видеть в форме, если родитель установлен, ключ и settingCategory унаследован от родительский объект установки.
Я хочу «ключ» и «settingCategory» required (NotBlank), если parent имеет значение NULL, но если родитель установлен, тогда «ключ» и «установка категории» не являются обязательными.
Как это сделать в symfony?
Отлично, это сработало! – vishal
Спасибо @vishal в большинстве случаев - это быстрые решения (вы можете объединить его с группой валидатора и т. Д.), Когда-нибудь лучше построить пользовательский валидатор, но не кажется вашей ситуацией – Matteo