---
title: "Adding own serverside and clientside validation to femanager forms"
manual: "Femanager"
version: "13.4"
permalink: "https://docs.typo3.org/permalink/in2code/femanager:extendvalidators@13.4"
source: "Features/NewValidators/Index.rst"
rendered: "2026-11-12T07:32:45+00:00"
---

# Adding own serverside and clientside validation to femanager forms {#extendvalidators}

## Picture {#picture}

![](../../Images/femanager_edit2.png)

Add own clientside (JavaScript) Validation

![](../../Images/femanager_flexform_newfields.png)

Add own serverside (PHP) Validation

## Basics {#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

> [!WARNING]
> **Attention**
>
> The following example works only with TYPO3 Version >= 10.4 LTS

See [https://github.com/in2code-de/femanagerextended](https://github.com/in2code-de/femanagerextended) for an example extension how to extend femanager
with new fields and validation methods

## Step by Step {#step-by-step}

### New validation classes {#new-validation-classes}

CustomClientsideValidator.php:

```php
namespace YourVendor\YourExtension\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): bool
   {
      // check if string has string inside
      if (stristr($value, $validationSetting)) {
         return true;
      }
      return false;
   }
}
```

CustomServersideValidator.php:

```php
namespace YourVendor\YourExtension\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): bool
   {
      // check if string has string inside
      if (stristr($value, $validationSetting)) {
         return true;
      }
      return false;
   }
}
```

### Configure override of ServersideValidator and ClientsideValidator {#configure-override-of-serversidevalidator-and-clientsidevalidator}

ext_localconf.php

```php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\In2code\Femanager\Domain\Validator\ServersideValidator::class] = [
   'className' => \YourVendor\YourExtension\Domain\Validator\CustomServersideValidator::class,
];
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\In2code\Femanager\Domain\Validator\ClientsideValidator::class] = [
   'className' => \YourVendor\YourExtension\Domain\Validator\CustomClientsideValidator::class,
];
```

### TypoScript to enable new validation and set labels {#typoscript-to-enable-new-validation-and-set-labels}

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