传递无形场';s”;“必需”;信息转换为复合Symfony2形式


Passing invididual field's "required" information to a compound Symfony2 form

我需要在Symfony2应用程序的多个位置输入一对日期和时间。为了实现这一点,我创建了一个custom_datetime表单类型。我想决定偶尔是否需要time,而如果整个customer_datetime都有required标志,则保持需要date

class DateTime extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('date', 'text', [
                'attr' => ['required' => true] // Here I maybe should inherit what is passed by the parent form
            ])
            ->add('time', 'text', [
                'attr' => ['required' => $options['time_required']]
            ])
        ;
    }
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'time_required' => false
        ));
    }
    public function getName()
    {
        return 'custom_datetime';
    }
}

CCD_ 5则采用其他形式。目前我是这样使用的:

// date should be entered, time should not -- this does not currently work
$builder->add('dt', 'custom_datetime', ['required' => true, 'time_required' => false]);
// date + time should be entered
$builder->add('dt', 'custom_datetime', ['required' => true, 'time_required' => true]);
// neither of date or time is required
$builder->add('dt', 'custom_datetime', ['required' => false]);

不幸的是,time字段在HTML中呈现时获得了必需的属性。

应该做些什么来允许custom_datetime的父窗体传递有关时间字段的"必需"信息

您不应该为此使用attr属性。

$builder
    ->add('time', 'text', array('required' => true))