如何在CakePHP上验证包含月份的下拉列表

如何在CakePHP上验证包含月份的下拉列表,php,validation,cakephp,drop-down-menu,Php,Validation,Cakephp,Drop Down Menu,几个星期来我一直在研究如何做到这一点,但没有找到任何好的答案。我的意思是,我认为这样做应该很容易,但一点也不容易。问题是,我必须让用户选择一个月的间隔,这样我才能向他显示正确的数据。因为它与我数据库中的任何表都不相关,所以我只是这样做: <?php echo $this->Form->create(false); echo $this->Form->month('m1', null, array('monthNames' => false)); echo '

几个星期来我一直在研究如何做到这一点,但没有找到任何好的答案。我的意思是,我认为这样做应该很容易,但一点也不容易。问题是,我必须让用户选择一个月的间隔,这样我才能向他显示正确的数据。因为它与我数据库中的任何表都不相关,所以我只是这样做:

<?php
echo $this->Form->create(false);
echo $this->Form->month('m1', null, array('monthNames' => false));
echo ' until ';
echo $this->Form->month('m2', null, array('monthNames' => false));
echo $this->Form->end('Choose');
?>
这是我的控制器:

function choose_date ($id = null) {
    if (!empty($this->data)) {
        $this->Frequency->set($this->data);
        if ($this->Frequency->validates()) {
            $fD = $this->data['m1']['month'].'/'.date('Y');
            $tD = $this->data['m2']['month'].'/'.date('Y');
            $this->Session->write('Frequency.fromDate', $fD);
            $this->Session->write('Frequency.toDate', $tD);
            $this->redirect(array('action' => 'view'));
        }
    } else { $this->Session->write('Worker.id', $id); }
}

因此,它只是冻结在“choose_date”视图中,不管是否选择列表中的任何内容。我如何验证它?这可能是一个简单的任务,但它让我发疯

解决了它。我只需要使用“倍数”规则,并给出我想要接受的值。:)

解决了它。我只需要使用“倍数”规则,并给出我想要接受的值。:)

我知道这是很久以前的事了,但是你用的规则是什么?我也有同样的问题,除了我正在尝试检查的月份字段不是空的我保罗!这个问题已经问了很长时间了——我已经很长时间没有使用CakePHP了。我试图准确地记住我做了什么,这可能与此有关:我知道这是很久以前的事了(!),但你使用的规则是什么?我也有同样的问题,除了我正在尝试检查的月份字段不是空的我保罗!这个问题已经问了很长时间了——我已经很长时间没有使用CakePHP了。我试图准确地记住我做了什么,这可能与此有关:
function choose_date ($id = null) {
    if (!empty($this->data)) {
        $this->Frequency->set($this->data);
        if ($this->Frequency->validates()) {
            $fD = $this->data['m1']['month'].'/'.date('Y');
            $tD = $this->data['m2']['month'].'/'.date('Y');
            $this->Session->write('Frequency.fromDate', $fD);
            $this->Session->write('Frequency.toDate', $tD);
            $this->redirect(array('action' => 'view'));
        }
    } else { $this->Session->write('Worker.id', $id); }
}