在symfony2表单创建器中,我有一个简单的日期字段:
->add('start_date', 'date', array(
'html5' => false,
'widget' => 'single_text',
))
这完美地完成了工作,但我不想选择旧日期,例如,如果今天是2015-11-19我不想选择2015-11-18。它应该是灰色的东西。
这样的东西有默认选项吗?如果没有,那么做什么是最好的方法呢?
答案 0 :(得分:1)
您可以在特定选项中使用range
来实现它。
仅举例(仅在此案例的前一天):
$builder->add('start_date','date', array(
'days' => range(date('d') -1, date('d')),
));
答案 1 :(得分:0)
问题是DateType不适用于日期,而是使用单独的年,月和日值列表(如果需要,可以将其传递给构建器,请参阅http://symfony.com/doc/current/reference/forms/types/date.html)。如果您希望类型知道"日期之后的日期"你需要建立一个自定义表单类型,它并不难:http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html。
您可以扩展Symfony \ Component \ Form \ Extension \ Core \ Type \ DateType并覆盖setDefaultOptions:
class MyDateType extends DateType {
public function setDefaultOptions(OptionsResolverInterface $resolver){
parent::setDefaultOptions($resolver);
//Insert here your logic to create valid values for year, month, day
$my_list_of_years = .....;
$my_list_of_months = .....;
$my_list_of_days = .....;
$resolver->setDefaults([
'years' => $my_list_of_years,
'months' => $my_list_of_months,
'days' => $my_list_of_days
]);
}
}