我需要在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))