Symfony2 сделать поле формы даты не выбирать старые даты

1

В создателе формы symfony2 у меня есть простое поле даты:

    ->add('start_date', 'date', array(
        'html5' => false,
        'widget' => 'single_text',
    ))

Это отлично работает, однако я не хочу, чтобы можно было выбрать старую дату, например, если сегодня 2015-11-19. Я не хочу выбирать 2015-11-18. Itt должен быть серым или что-то.

Есть ли опция по умолчанию для чего-то подобного? Если нет, что может быть лучшим подходом к тому, что я хочу?

  • 0
    это использует JQuery DatePicker?
  • 0
    Да, он использует JQuery!
Показать ещё 1 комментарий
Теги:
forms

2 ответа

1
Лучший ответ

Вы можете достичь этого с range в определенном варианте.

Только для примера (только на следующий день в этом случае):

$builder->add('start_date','date', array(
   'days' => range(date('d') -1, date('d')),
));
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
    ]);
  }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню