Adding own serverside and clientside validation to femanager forms

Picture

|newField1|

Add own clientside (JcavaScript) Validation

|newField2|

Add own serverside (PHP) Validation

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

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;
	}
}
Copied!

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;
	}
}
Copied!

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