我在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。
答案 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');
}