2011-12-20 107 views
4

如何申請相同的驗證規則50場在2.0應用相同的驗證規則多個字段

我沒興趣重複規則不同領域

public $validate = array(
    'company' => array(
     'notempty' => array(
      'rule' => array('notempty'), 
      'message' => 'Cannot be Empty', 

     ), 
    ), 
    // rule for other 50 fields.... 
); 
+0

總是一個好主意,指定你正在使用哪個版本的Cake。 – Dave

回答

2

可能的解決方案:

$validate_items = array('company', 'other', 'one_more'); 

$validate_rule = array(
    'notempty' => array(
     'rule' => array('notempty'), 
     'message' => 'Cannot be Empty') 
    ); 

$validate = array(); 

foreach ($validate_items as $validate_item) { 
    $validate[$validate_item] = $validate_rule; 
} 

echo "<pre>".print_r($validate, true)."</pre>"; 

不明白爲什麼要確定50次相同的驗證。您可以聲明一個規則並將其用於所有字段。

可能是我誤解了你的問題?

+0

我要申請的50個不同字段不爲空 – aWebDeveloper

+0

「您可以聲明一條規則並將其用於您的所有字段。」我該怎麼做 – aWebDeveloper

+0

你想驗證哪些字段? $ _POST大量? – AndVla

0

新的例子:

$fields_to_check = array('company', 'field_2', 'field_5'); // declare here all the fields you want to check on "not empty" 

$errors = 0; 

foreach ($_POST as $key => $value) { 
    if (in_array($key, $fields_to_check)) { 
     if ($value == "") $errors++; 
    } 
} 

if ($errors > 0) echo "There are ".$errors." errors in the form. Chech if all requered fields are filled in!"; //error! Not all fields are set correctly 
else //do some action 
+4

你的兩個答案都與CakePHP無關,因此與這個問題無關。 – Dunhamzzz

+0

@Dunhamzzz你是對的 – aWebDeveloper

+0

對不起,沒有檢查標籤。在問題描述和標題中沒有提到CakePHP。幫不了你,對不起。 – AndVla

1

您可以動態建立$驗證規則,然後再執行保存在你的控制器之前:

公共函數add(){

if (!empty($this->request->data) { 

    $validate = array(); 

    foreach($fields as $field) { 
     $validate[$field] = array(
      'required'=>array(
       'rule'='notEmpty', 
       'message'=>'Cannot be empty' 
      ) 
     ); 
    } 

    $this->ModelName->validate = $validate; 

    if (!$this->ModelName->save($this->request->data)) { 
     // didn't save 
    } 
    else { 
     // did save 
    } 

} 

}

其中$ fields是一個包含要應用的字段列表的數組e驗證。

Idealy,你會轉變,建立驗證陣列模式的代碼,但效果是一樣的

您可以將同樣的技術,讓您有一個模型中的多個驗證規則。

+0

beforeValidtae的模型是正確的地方 – aWebDeveloper

相關問題