Adding own serverside and clientside validation to femanager forms¶
Basics¶
- Use TypoScript to override ValidationClass of femanager with own classes – this enables your validation methods
 - Config the new validation methods via TypoScript
 - Add translation labels via TypoScript
 
See https://github.com/einpraegsam/femanagerextended for an example extension how to extend femanager with new fields and validation methods
Step by Step¶
Override Validation Classes with TypoScript¶
config.tx_extbase{
        objects {
                In2code\Femanager\Domain\Validator\ServersideValidator.className = In2code\Femanagerextended\Domain\Validator\CustomServersideValidator
                In2code\Femanager\Domain\Validator\ClientsideValidator.className = In2code\Femanagerextended\Domain\Validator\CustomClientsideValidator
        }
}
New validation classes¶
CustomClientsideValidator.php:
namespace In2code\Femanagerextended\Domain\Validator;
class CustomClientsideValidator extends \In2code\Femanager\Domain\Validator\ClientsideValidator
{
        /**
         * Custom Validator
         *              Activate via TypoScript - e.g. plugin.tx_femanager.settings.new.validation.username.custom = validationSetting
         *
         * @param string $value Given value from input field
         * @param string $validationSetting TypoScript Setting for this field
         * @return bool
         */
        protected function validateCustom($value, $validationSetting)
        {
                // check if string has string inside
                if (stristr($value, $validationSetting)) {
                        return TRUE;
                }
                return FALSE;
        }
}
CustomServersideValidator.php:
namespace In2code\Femanagerextended\Domain\Validator;
class CustomServersideValidator extends \In2code\Femanager\Domain\Validator\ServersideValidator
{
        /**
         * Custom Validator
         *              Activate via TypoScript - e.g. plugin.tx_femanager.settings.new.validation.username.custom = validationSetting
         *
         * @param string $value Given value from input field
         * @param string $validationSetting TypoScript Setting for this field
         * @return bool
         */
        protected function validateCustom($value, $validationSetting)
        {
                // check if string has string inside
                if (stristr($value, $validationSetting)) {
                        return TRUE;
                }
                return FALSE;
        }
}
TypoScript to enable new validation and set labels¶
plugin.tx_femanager {
        settings.new.validation {
                _enable.client = 1
                _enable.server = 1
                username {
                        # Custom Validator - check if value includes "abc"
                        custom = abc
                }
        }
        _LOCAL_LANG {
                default.validationErrorCustom = "abc" is missing
                de.validationErrorCustom = "abc" wird erwartet
        }
}

