В создателе формы symfony2 у меня есть простое поле даты:
->add('start_date', 'date', array(
'html5' => false,
'widget' => 'single_text',
))
Это отлично работает, однако я не хочу, чтобы можно было выбрать старую дату, например, если сегодня 2015-11-19. Я не хочу выбирать 2015-11-18. Itt должен быть серым или что-то.
Есть ли опция по умолчанию для чего-то подобного? Если нет, что может быть лучшим подходом к тому, что я хочу?
Вы можете достичь этого с range
в определенном варианте.
Только для примера (только на следующий день в этом случае):
$builder->add('start_date','date', array(
'days' => range(date('d') -1, date('d')),
));
проблема заключается в том, что 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
]);
}
}