/** * Set different mandatory attributes for checkboxes and radiobuttons * * @param array &$additionalAttributes * @param Field $field * @param mixed $iteration * @return void */ protected function addMandatoryAttributesForMultipleFields(&$additionalAttributes, $field, $iteration) { if ($iteration['index'] === 0) { if ($field->getMandatory()) { if ($this->isNativeValidationEnabled()) { $additionalAttributes['required'] = 'required'; // remove required attribute if more checkboxes than 1 if ($field->getType() === 'check' && $iteration['total'] > 1) { unset($additionalAttributes['required']); } } else { if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-required'] = 'true'; } } if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-required-message'] = LocalizationUtility::translate('validationerror_mandatory_multi'); if ($field->getType() === 'check' && $iteration['total'] > 1) { $additionalAttributes['data-parsley-required'] = 'true'; } } } if ($this->isClientValidationEnabled()) { // define where to show errors $additionalAttributes['data-parsley-errors-container'] = '.powermail_field_error_container_' . $field->getMarker(); // define where to set the error class $additionalAttributes['data-parsley-class-handler'] = '.powermail_fieldwrap_' . $field->getUid() . ' div:first'; } } // add multiple attribute to bundle checkboxes for parsley if ($field->getMandatory() && $this->isClientValidationEnabled() && $field->getType() === 'check' && $iteration['total'] > 1) { $additionalAttributes['data-parsley-multiple'] = $field->getMarker(); } }
/** * Set different mandatory attributes * * @param \array $dataArray * @param \In2code\Powermail\Domain\Model\Field $field * @param \mixed $iteration * @return void */ protected function addMandatoryAttributes(&$dataArray, $field, $iteration) { if ($field->getMandatory() && ($iteration === NULL || $iteration['index'] === 0)) { if ($this->isNativeValidationEnabled()) { $dataArray['required'] = 'required'; // don't want the required attribute if more checkboxes if ($field->getType() == 'check' && $iteration['total'] > 1) { unset($dataArray['required']); } } else { if ($this->isClientValidationEnabled()) { $dataArray['data-parsley-required'] = 'true'; } } if ($this->isClientValidationEnabled()) { $dataArray['data-parsley-required-message'] = LocalizationUtility::translate('validationerror_mandatory', $this->extensionName); // type radio, checkbox if ($field->getType() == 'radio' || $field->getType() == 'check') { // define where to show errors $dataArray['data-parsley-errors-container'] = '.powermail_field_error_container_' . $field->getMarker(); // define where to set the error class $dataArray['data-parsley-class-handler'] = '.powermail_fieldwrap_' . $field->getUid() . ' div:first'; // overwrite error message $dataArray['data-parsley-required-message'] = LocalizationUtility::translate('validationerror_mandatory_multi', $this->extensionName); if ($field->getType() == 'check' && $iteration['total'] > 1) { $dataArray['data-parsley-required'] = 'true'; } } } } // add multiple attribute to bundle checkboxes for parsley if ($field->getMandatory() && $this->isClientValidationEnabled() && $field->getType() == 'check' && $iteration['total'] > 1) { $dataArray['data-parsley-multiple'] = $field->getMarker(); } // Captcha if ($field->getType() === 'captcha') { if ($this->isNativeValidationEnabled()) { $dataArray['required'] = 'required'; } elseif ($this->isClientValidationEnabled()) { $dataArray['data-parsley-required'] = 'true'; } if ($this->isClientValidationEnabled()) { $dataArray['data-parsley-errors-container'] = '.powermail_field_error_container_' . $field->getMarker(); $dataArray['data-parsley-class-handler'] = '.powermail_fieldwrap_' . $field->getUid() . ' > div'; $dataArray['data-parsley-required-message'] = LocalizationUtility::translate('validationerror_mandatory', $this->extensionName); } } }
/** * Set mandatory attributes * * @param array &$additionalAttributes * @param Field $field * @return void */ protected function addMandatoryAttributes(&$additionalAttributes, Field $field = null) { if ($field !== null && $field->getMandatory()) { if ($this->isNativeValidationEnabled()) { $additionalAttributes['required'] = 'required'; } else { if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-required'] = 'true'; } } if ($this->isClientValidationEnabled()) { $additionalAttributes['data-parsley-required-message'] = LocalizationUtility::translate('validationerror_mandatory'); $additionalAttributes['data-parsley-trigger'] = 'change'; } } }
/** * Validate a single field * * @param Field $field * @param mixed $value * @return void */ protected function isValidField(Field $field, $value) { // Mandatory Check if ($field->getMandatory()) { if (!$this->validateMandatory($value)) { $this->setErrorAndMessage($field, 'mandatory'); } } // String Checks if (!empty($value) && in_array($field->getType(), $this->validationFieldTypes)) { switch ($field->getValidation()) { // email case 1: if (!$this->validateEmail($value)) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // URL // URL case 2: if (!$this->validateUrl($value)) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // phone // phone case 3: if (!$this->validatePhone($value)) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // numbers only // numbers only case 4: if (!$this->validateNumbersOnly($value)) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // letters only // letters only case 5: if (!$this->validateLettersOnly($value)) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // min number // min number case 6: if (!$this->validateMinNumber($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // max number // max number case 7: if (!$this->validateMaxNumber($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // range // range case 8: if (!$this->validateRange($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // length // length case 9: if (!$this->validateLength($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; // pattern // pattern case 10: if (!$this->validatePattern($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $field->getValidation()); } break; /** * E.g. Validation was extended with Page TSconfig * tx_powermail.flexForm.validation.addFieldOptions.100 = New Validation * * Register your Class and Method with TypoScript Setup * plugin.tx_powermail.settings.setup.validation.customValidation.100 = * In2code\Powermailextended\Domain\Validator\ZipValidator * * Add method to your class * validate100($value, $validationConfiguration) * * Define your Errormessage with TypoScript Setup * plugin.tx_powermail._LOCAL_LANG.default.validationerror_validation.100 = * Error happens! */ /** * E.g. Validation was extended with Page TSconfig * tx_powermail.flexForm.validation.addFieldOptions.100 = New Validation * * Register your Class and Method with TypoScript Setup * plugin.tx_powermail.settings.setup.validation.customValidation.100 = * In2code\Powermailextended\Domain\Validator\ZipValidator * * Add method to your class * validate100($value, $validationConfiguration) * * Define your Errormessage with TypoScript Setup * plugin.tx_powermail._LOCAL_LANG.default.validationerror_validation.100 = * Error happens! */ default: if ($field->getValidation()) { $validation = $field->getValidation(); if (!empty($this->settings['validation.']['customValidation.'][$validation])) { $extendedValidator = $this->objectManager->get($this->settings['validation.']['customValidation.'][$validation]); if (method_exists($extendedValidator, 'validate' . ucfirst($validation))) { if (!$extendedValidator->{'validate' . ucfirst($validation)}($value, $field->getValidationConfiguration())) { $this->setErrorAndMessage($field, 'validation.' . $validation); } } } } } } }