Проверка Существования Даты

Доброе время суток.

Есть файл _form.php.

В нем находится 3 текстовых поля.

day

month

year

Если в rules() для каждого поля добавить правило типа: “array(‘day’, ‘date’, ‘format’=>array(‘dd’));”, то вполне возможно создать несуществующую дату (например 31.02.1990). Если бы было одно поле, проблем бы не было, но их три. Как можно все эти три поля совместить и проверить на существование даты?

Можете показать кодом?

Для тех кто не понял: см. аттач

Ну, самое простое - свой валидатор.

А не удобнее использовать Datapicker (CJuiDatePicker)? Для этого достаточно одного поля типа date. Из плюсов, можно указывать валидный период времени например с 1940-2000г.

Как вариант - отправлять дату массивом и использовать собственный валидатор:

View:




<?php $form->textField($model, 'date[day]');?>

<?php $form->textField($model, 'date[month]');?>

<?php $form->textField($model, 'date[year]');?>



Model:




public function rules()

{

     return array(

          ...

          array('date', 'groupDateValid'),

          ...

     );

}

...

public function groupDateValid($attribute, $params)

{

     if(isset($this->$attribute['day']) && isset($this->$attribute['month']) && isset($this->$attribute['year'])) {

          // у checkdate порядок атрибутов именно такой: месяц, день, год

          if(!checkdate($this->$attribute['month'], $this->$attribute['day'], $this->$attribute['year'])) {

               $this->addError($attribute, 'Дата не существует');

          }

     } elseif(!isset($params['allowEmpty'])) {

          $this->addError($attribute, 'Поле обязательно для заполнения');

     }

}