Применить одно правило проверки для нескольких полей

Как применить одно правило проверки для 50 полей в 2.0

я не заинтересован в повторении правила для разных полей

public $validate = array( 'company' => array( 'notempty' => array( 'rule' => array('notempty'), 'message' => 'Cannot be Empty', ), ), // rule for other 50 fields.... ); 

Related of "Применить одно правило проверки для нескольких полей"

Возможное решение:

 $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 раз. Вы можете объявить только одно правило и использовать его для всех своих полей.

Может быть, я неправильно понял ваш вопрос?

Вы можете динамически создавать свои правила $ validate перед выполнением сохранения в вашем контроллере:

public function 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 – массив, содержащий список полей, к которым вы хотите применить проверку.

Idealy, вы переместили бы код, который строит массив проверки в модель, но эффект тот же

Вы можете применить тот же метод, чтобы позволить вам иметь несколько правил валидации для модели.

Новый пример:

 $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