public function validateEntry($form, $submissionData) { $fieldLayoutFields = $form->getFieldLayout()->getFields(); $errorMessage = []; foreach ($fieldLayoutFields as $key => $fieldLayoutField) { $requiredField = $fieldLayoutField->attributes['required']; $fieldId = $fieldLayoutField->fieldId; $field = craft()->fields->getFieldById($fieldId); $userValue = array_key_exists($field->handle, $submissionData) ? $submissionData[$field->handle] : false; if ($requiredField == 1) { $field->required = true; } switch ($field->type) { case "PlainText": if ($field->required) { $text = craft()->request->getPost($field->handle); if ($text == '') { $errorMessage[$field->handle] = Craft::t('{fieldname} cannot be blank.', array('fieldname' => $field->name)); } } break; case "RichField": if ($field->required) { $richField = craft()->request->getPost($field->handle); if ($richField == '') { $errorMessage[$field->handle] = Craft::t('{fieldname} cannot be blank.', array('fieldname' => $field->name)); } } break; case "Number": $number = craft()->request->getPost($field->handle); if ($field->required) { if (!ctype_digit($number)) { $errorMessage[$field->handle] = Craft::t('{fieldname} cannot be blank and needs to contain only numbers.', array('fieldname' => $field->name)); } } else { if (!ctype_digit($number) && !empty($number)) { $errorMessage[$field->handle] = Craft::t('{fieldname} needs to contain only numbers.', array('fieldname' => $field->name)); } } break; case "MultiSelect": $multiselect = craft()->request->getPost($field->handle); if ($field->required) { if ($multiselect == '') { $errorMessage[$field->handle] = Craft::t('{fieldname} needs at least one item selected.', array('fieldname' => $field->name)); } } break; case "RadioButtons": $radiobuttons = craft()->request->getPost($field->handle); if ($field->required) { if ($radiobuttons == '') { $errorMessage[$field->handle] = Craft::t('{fieldname} needs at least one option selected.', array('fieldname' => $field->name)); } } break; case "Dropdown": $dropdown = craft()->request->getPost($field->handle); if ($field->required) { if ($dropdown == '') { $errorMessage[$field->handle] = Craft::t('{fieldname} needs an item selected.', array('fieldname' => $field->name)); } } break; case "Checkboxes": $checkbox = craft()->request->getPost($field->handle); if ($field->required) { if ($checkbox == '') { $errorMessage[$field->handle] = Craft::t('{fieldname} must be checked.', array('fieldname' => $field->name)); } } break; } } return $errorMessage; }