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
}
}