1

我需要在 Symfony2 应用程序的多个位置输入一对日期和时间。为此,我创建了一个custom_datetime表单类型。我想决定是否需要,如果整个 custom_datetime 有一个标志time,则保持需要。daterequired

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';
    }
}

然后custom_datetime是其他形式。目前我这样使用它:

// 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传递有关时间字段的“必需”信息?

4

1 回答 1

0

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

$builder
    ->add('time', 'text', array('required' => true))
于 2013-02-08T02:25:53.847 回答