Подтвердить день рождения в целочисленном виде - PullRequest
0 голосов
/ 29 марта 2012

Это проверка в моей инфомодели. Я хочу проверить день рождения , но в поле "1003 *" Birthday "int (8) в БД. К сожалению, у меня нет прав на изменение таблицы БД MySQL. Теперь, как это проверить?

Пример дня рождения: 19800101

Я пробовал это, но я не могу придумать решение для преобразования дня рождения в строку.

var $validate = array(
    'job_id'        => array( 'rule' => 'notEmpty'              , 'message' => 'Text here' ),
    'sex_id'        => array( 'rule' => 'notEmpty'              , 'message' => 'Text here' ),
    'first_name'    => array( 'rule' => array( 'between', 1, 5 )    , 'message' => 'Text here' ),
    'last_name'     => array( 'rule' => array( 'between', 1, 5 )    , 'message' => '' ),
    //'birthday'        => array( 'rule' => 'some regex', 'message' => 'Text here' )
);

1 Ответ

1 голос
/ 29 марта 2012

Я считаю, что только с помощью регулярного выражения вы не можете проверить дату, включая високосные годы и общее количество дней месяца.

Вы можете добавить свой собственный метод проверки. Попробуйте это:

public $validate = array(
        'birthday' => array(
            'rule' => 'validateBirthday',
            'message' => 'Wrong date of birthday'
        )
);

public function validateBirthday($check) {
    $value = array_values($check);
    $value = $value[0];

    if (preg_match('/^(\d{4})(\d{2})(\d{2})$/', $value, $matches)) {
        return checkdate($matches[2], $matches[3], $matches[1]);
    } else {
        return false;
    }
}

Дополнительная информация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...