2012-03-15 105 views
1

「至少一個電話號碼是必需的」,這是模型文件vechile_enquiry.php驗證在CakePHP的

<?php 
    class VechileEnquiry extends AppModel{ 
     var $name ='VechileEnquiry'; 
     var $validate = array('name' => array 
              ('rule' => 'notEmpty', 
              'message' => 'Please type name') 
          ); 
    } 
?> 

這是視圖文件需要vechile.ctp

<?php 
    echo $this->Form->input('name', array('label'=>false)); 
?> 

至少一個電話號碼:

<?php 
    echo $this->Form->input('mobile_phone', array('label'=>false)); 
    echo $this->Form->input('work_phone', array('label'=>false)); 
    echo $this->Form->input('home_phone', array('label'=>false)); 
?> 

驗證正在名稱字段中工作,但我不是gett對於需要至少一個電話號碼的情況,如何在mobile_phone, work_phone,home_phone中實施驗證。

+0

[這個答案](http://stackoverflow.com/questions/1372996/at-least-one-field-must-be-filled-cakephp-驗證)正是你所需要的。 – Ross 2012-03-15 11:55:07

回答

1

這應該爲你做它:

var $validate = array(
    'name' => array(
     'rule' => 'notEmpty', 
     'message' => 'Please type name' 
    ), 
    'mobile_phone' => array(
     'check_phone' => array(
      'rule' => array('hasPhone'), 
      'required' => false, 
      'allowEmpty' => true, 
      'message' => 'At least one phone number is required.' 
     ) 
    ), 
    'work_phone' => array(
     'check_phone' => array(
      'rule' => array('hasPhone'), 
      'required' => false, 
      'allowEmpty' => true, 
      'message' => 'At least one phone number is required.' 
     ) 
    ), 
    'home_phone' => array(
     'check_phone' => array(
      'rule' => array('hasPhone'), 
      'required' => false, 
      'allowEmpty' => true, 
      'message' => 'At least one phone number is required.' 
     ) 
    ) 
); 


function hasPhone($field){ 
    if(!empty($this->data[$this->name]['mobile_phone']) || !empty($this->data[$this->name]['work_phone']) || !empty($this->data[$this->name]['home_phone'])){ 
     return true; 
    } else { 
     return false; 
    } 
} 
+0

感謝您的回覆先生威廉金,我嘗試它 – 2012-03-15 13:07:35

+0

填充mobile_phone後,它給味精其他兩個(work_phone,home_phone),如何停止它(後填充一個不顯示其他兩個味精)......謝謝 – 2012-03-15 13:23:20

+3

@William_Golden除非你取出''required'=> true'和''allowEmpty'=> false'參數,否則你可能會遇到問題,每個域的'hasPhone'規則應該足夠了。 – ianmjones 2012-03-15 13:28:28