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

时间:2011-02-13 17:58:37

标签: php validation cakephp drop-down-menu

我已经连续几个星期如何做到这一点,但没有找到任何好的答案。我的意思是我认为应该很容易做到这一点,但根本不是。这是事情,我必须要求用户选择一个月间隔,以便我可以向他显示正确的数据。由于它与我在数据库中的任何表无关,我只是这样做了:

<?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');
?>

然后在模型上创建了一个简单的规则(为了测试目的,只有一个字段的规则):

var $validate = array('m1' => array('rule' => 'notEmpty', 'required' => true, 'message' => 'Error!'));

这是我的控制器:

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”视图中冻结,无论是否在列表中选择任何内容都无关紧要。我该如何验证呢?这可能是一项简单的任务,但它让我发疯了!

1 个答案:

答案 0 :(得分:0)

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