Привет, ребята, мне нужна помощь с моим кодом. Я не знаю, как это сделать. У меня есть форма, в которой студент выбирает тело экзамена, если выбранный орган экзамена - это знаки zimsec, должен быть пустым, а если тело экзамена - это отметки в Кембридже, не должно быть пустым и должно занимать диапазон в зависимости от степени. validMarks - это функция, которую я использую для проверки меток, и она перестала работать, когда я допустил, чтобы метки были пустыми, чтобы разместить Zimsec.Cakephp: проверка поля ввода в зависимости от опции, выбранной из выпадающего списка
Мой add.ctp
echo "<td>";
echo $this->Form->label('Mark(%): ');
echo "</td><td>";
echo $this->Form->input("ApplicantOlevelQualification.mark.$s",array('label'=>''));
echo "</td></tr>";
echo $this->Form->label('Exam Body<font color=red>*</font>');
$exambody=array(
'ZIMSEC'=>'ZIMSEC',
'CAMBRIDGE'=>'CAMBRIDGE'
);
echo $this->Form->select('exam_body_code',$exambody,array('empty'=>'Please Select','selected'=>false,'label'=>'Exam Body<font color="red">*</font>'));
Мой контроллер
$exam_body_code = $this->data['ApplicantOlevelQualification']['exam_body_code'];
'mark' => $this->data['ApplicantOlevelQualification']['mark'][$i],
Моя модель
'exam_body_code' => array(
'notempty' => array(
'rule' => array('notempty'),
),
),
'mark' => array(
//'numeric' => array(
//'rule' => array('numeric'),
'rule' => array('validMarks'),
'message' => 'Wrong mark for this grade, please try again.',
'allowEmpty' => true,
// ),
),
public function validMarks($check) {
$grade=($this->data['ApplicantOlevelQualification']['grade']);
$mark=($this->data['ApplicantOlevelQualification']['mark']);
//var_dump($mark);
if($grade== 'A' && $mark>74) {
// $this->validationError('grade', 'Grade A must be greater than or equal to 75%');
//Access $this->data and $check to compare your marks and grade;
return true;
} elseif(($grade)== 'B' && ($mark>64)) {
return true;
} elseif(($grade)== 'C' && ($mark)>50) {
return true;
} elseif(($grade)== 'D' && ($mark)>40) {
return true;
} elseif(($grade)== 'E' && ($mark)>30) {
return true;
} elseif(($grade)== 'U' && ($mark)>0) {
return true;
} else {
return false;
}
//Access $this->data and $check to compare your marks and grade..
}
ori Большое вам спасибо, что у меня есть небольшая проблема, хотя мой код работает очень хорошо, но только для проверки первого элемента в массиве. Не знаю, можете ли вы попытаться выполнить цикл, но он не работает. – alicemap