2012-03-15 11 views
1

に「少なくとも1つの電話番号が必要とされる」のために。これは、モデルファイルであるvechile_enquiry.php検証CakePHPの

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

これは、少なくとも1つの電話番号が必要とされるビューファイル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)); 
?> 

検証は名前フィールドで行われていますが、私は取得しません少なくとも1つの電話番号が必要であるという条件の場合、mobile_phonework_phonehome_phoneで検証を実装する方法。

+0

[この回答](http://stackoverflow.com/questions/1372996/at-least-one-field-must-be-filled-cakephp-検証)はあなたが必要とするものを正確に持っています。 – Ross

答えて

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

返事ありがとうMr William Golden、私はそれを試します –

+0

これはmsgを他の2人(work_phone、home_phone)に与えています、それを止める方法です(他の2人はmsgを表示しないでください)...... thanks –

+3

@William_Goldenこれらの '' required '=> true'と '' allowEmpty' => false'パラメータを取り除かなければ問題になるかもしれませんが、各フィールドの 'hasPhone'ルールで十分です。 – ianmjones

関連する問題