我需要在 Symfony2 应用程序的多个位置输入一对日期和时间。为此,我创建了一个custom_datetime
表单类型。我想决定是否需要,如果整个 custom_datetime 有一个标志time
,则保持需要。date
required
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
传递有关时间字段的“必需”信息?