cakePHP:验证类型日期,但仅使用年份

时间:2014-07-14 12:44:14

标签: php date cakephp datetime types

我在cakePHP中使用日期类型,但用户只需选择一年而不是一天一个月。

视图中的代码:

echo $this->Form->input('player_turnedPro', array(
    'type' => 'date',
    'dateFormat' => 'Y',
    'minYear' => date('Y')-100, 
    'maxYear' => date('Y')-0+1, 
    'label' => 'Turned Pro',
    'empty' => '- select -',
    'default' => date('Y')
));

模型中的代码:

'player_turnedPro' => array(
    'notEmpty' => array(
        'rule' => array('notEmpty'),
        ),
    ),

我已将数据库列的类型设置为DATE。

我遇到的问题是年份的价值不在数据库中,我在下拉列表中收到消息:notEmpty。

2 个答案:

答案 0 :(得分:0)

创建这样的自定义验证(仅适用于100年后期和当前年份+ 1,根据您的需要调整)

function validateYear($field) {
    return current($field) > date('Y') - 100 && current($field) < date('Y') + 1;
}

坚持在模型中,添加到验证规则

'player_turnedPro' => array(
    'notEmpty' => array(
        'rule' => array('notEmpty'),
    ),
    'validateYear' => array(
        'rule' => array('validateYear'),
    ),
),

答案 1 :(得分:0)

在检查$ this-&gt; ModelName-&gt; validates()

之前,请先在控制器中试用此代码
if(empty($this->data['player_turnedPro'])){
        $this->ModelName->validationErrors['player_turnedPro'][] = __('Select Year');
}