2011-02-13 120 views
2

我已經搜索了幾個星期,如何做到這一點,但沒有找到任何好的答案。我的意思是我認爲這樣做很容易,但根本不會。這是事情,我必須要求用戶選擇一個月的時間間隔,這樣我才能向他顯示正確的數據。因爲它不涉及任何表我有我的數據庫,我只是做了這一點:如何在CakePHP上驗證月份的下拉列表

<?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」看來,如果做或不選擇名單上的任何東西都無所謂。我如何驗證它?這可能是一個簡單的任務,但它讓我瘋了!

回答

0

解決了它。我只需要使用規則「倍數」並給出我想要接受的值。 :)

+0

我知道這是很久以前(!),但你用什麼規則?我有同樣的問題,除了我試圖檢查月份字段不是空的 – Paul 2014-09-04 16:33:33