---
title: "Eigener CustomUserValidator gibt keine ErrorMessage zurück?"
url: "https://www.typo3.net/d/103503-eigener-customuservalidator-gibt-keine-errormessage-zurueck"
source: "typo3.net"
tags: ["Extensions","Extbase","Frage"]
created: "2011-01-27"
last_reply: "2012-01-16"
replies: 5
solved: false
page: 1
pages: 1
lang: "de"
---

# Eigener CustomUserValidator gibt keine ErrorMessage zurück?

Extensions › Extbase · 5 Antworten · gestartet 2011-01-27

## Eröffnungsbeitrag

**typonewbe** · 2011-01-27 · [Beitrag #1](https://www.typo3.net/d/103503-eigener-customuservalidator-gibt-keine-errormessage-zurueck/1)

Hallo,

ich versuche für ein Registrierungsformular meiner Extension das confirm password Problem zu lösen.

Im Buch "Zukunftssichere Extensions mit Extbase und Fluid" gibt es sogar einen Beispielvalidator dafür. Diesen hab ich etwas angepasst umgesetzt. Grund dafür ist die Tatsache, dass ich nicht noch ein unnützes Feld password_confirmation in meiner DB haben wollte.

```php
class Tx_MyExt_Domain_Validator_CustomUserValidator extends Tx_Extbase_Validation_Validator_AbstractValidator {
		/**
		 * 
		 *
		 * @param Tx_MyExt_Domain_Model_FrontendUsers $user
		 * @return boolean true
		 */
		public function isValid($user) {
			$this->errors = array();
			/*if(!$user instanceof Tx_MyExt_Domain_Model_FrontendUsers) {
				$this->addError('The given Object is not a FrontendUser.', 1962341470);
				return FALSE;
			}
			*/
			if($user->getPassword() != t3lib_div::_GP('passwordConfirmation')) {
				$this->addError('The passwords do not match.', 1962341799);
				return FALSE;
			}
			return TRUE;
		}
	}
```

Jedenfalls das Hauptproblem bei diesem Validator ist das ich statt einem Feld den Benutzer selbst validiere dafür gibt es aber kein Eingabefeld. Wenn ich jetzt den Fehler provoziere passiert zwar etwas, allerdings wird

```html
<f:form.errors for="newFrontendUser">
	<div style="background-color: #fdd; padding: 12px;">
		<strong>
			<f:translate key="FrontendUser_Attributes_{error.propertyName}" />:
		</strong>
		<f:for each="{error.errors}" as="fieldError">
			<f:translate key="FrontendUser_Error_{error.propertyName}_{fieldError.code}" />
			{error.propertyName} : {fieldError.code}
		</f:for>
	</div>
</f:form.errors>
```

weder der {error.propertyName} noch der {fieldError.code} ausgefüllt.

Ich erhalte somit keine Fehlermeldung und keinen Code mit dem ich was anfangen kann.

Hat jemand eine Idee wie ich den Validator bzw. das Formular dazu bringe Anständige Fehlermeldung und Errorcode auszugeben?

Danke schon mal für die Mühe!

Viele Grüße typonewbe

## Antworten

### [#2](https://www.typo3.net/d/103503-eigener-customuservalidator-gibt-keine-errormessage-zurueck/2) · wolfi02 · 2012-01-12

Hallo typonewbe,

hast du für dieses Problem bereits eine Lösung gefunden? Stehe nämlich vor dem selben Problem und finde auch im Netz nix dazu.

Viele Grüße Christian

### [#3](https://www.typo3.net/d/103503-eigener-customuservalidator-gibt-keine-errormessage-zurueck/3) · freshman17 · 2012-01-14

Das $user-Objekt muss an die Action übergeben werden, dann kann man dieses validieren.
Beispiel:

Formular:

```php
<f:form method="post" action="foo" name="user" object="{user}">...</f:form>
```

Action:

```php
/**
 * @param Tx_MyExt_Domain_Model_User $user
 * @validate $user Tx_MyExt_Domain_Validator_UserValidator
 */
public function fooAction($user) {..}
```

Validator:

```php
class Tx_MyExt_Domain_Validator_UserValidator extends Tx_Extbase_Validation_Validator_AbstractValidator {
	public function isValid($user) {..}
}
```

Übrigens ist in diesem Beispiel die @validate-Annotation nicht zwingend notwendig da die Namenskonventionen eingehalten werden (siehe: TYPO3-Extensions mit Extbase & Fluid Seite 232)
Gruß

### [#4](https://www.typo3.net/d/103503-eigener-customuservalidator-gibt-keine-errormessage-zurueck/4) · wolfi02 · 2012-01-14

Hallo freshman17,

danke für deinen Hinweis. So wie du es beschrieben hast, hatte ich es bereits implementiert. Die Validierung wurde auch durchgeführt und bei einem Fehler das Objekt entsprechend nicht gespeichert. Der Benutzer wurde auch wieder auf das Formular zugeführt, allerdings ist das Problem, dass keine Fehlermeldung im FE erzeugt wird.

In der Validatorklasse hatte ich mit

```php
t3lib_utility_Debug::debug($this->getErrorMessages());
```

geprüft ob Meldungen erzeugt werden (werden sie). Nur im FE scheint es keine Möglichkeit zu geben, auf die erzeugten Meldungen zu zugreifen. Ich nehme mal an, dass das System in diesem Fall nicht weiß, welchem Feld es die Fehlermeldung(en) zuordnen soll.

Oder muss der Zugriff auf die ErrorMessages im FE anders gestaltet werden?

Vielen Dank und viele Grüße Christian

### [#5](https://www.typo3.net/d/103503-eigener-customuservalidator-gibt-keine-errormessage-zurueck/5) · freshman17 · 2012-01-15

Hi Christian,

im FE hat man zwei Möglichkeiten den Fehler sichtbar zu machen:

1. Fluid fügt die CSS-Klasse **f3-form-error** zu allen fehlerhaften Feldern hinzu (nur für Eigenschaften eines Objektes geeignet)
2. es gibt einen flashMessages-ViewHelper, der die Fehlermeldungen ausgibt.

```php
<f:flashMessages />
<f:form method="post" action="foo" name="user" object="{user}">...</f:form>
```

Gruß

### [#6](https://www.typo3.net/d/103503-eigener-customuservalidator-gibt-keine-errormessage-zurueck/6) · wolfi02 · 2012-01-16

Hallo freshman17,

wie man an die entsprechenden Meldungen im FE herankommt war mir klar. Ich habe inzwischen einen Lösung gefunden, welche ganz gut funktioniert.

```php
$this->errors['propertyName'] = new Tx_Extbase_Validation_PropertyError('propertyName', time());
$this->errors['propertyName']->addErrors(array(new Tx_Extbase_Validation_Error(
								Tx_Extbase_Utility_Localization::translate('locallangKey', 'extensionName'), 1326384303)));
```

Das Problem ist/war wirklich, dass Extbase die Fehlermeldung zwar korrekt erstellt hat, allerdings keiner konkreten Property zugeordnet hat bzw. konnte. Durch diese 3 Codezeilen oben, ist es nun möglich ist einem Object-Validator die Fehlermeldung einer bestimmten Property zu zuordnen.

Viele Grüße Christian

---

Quelle: „Eigener CustomUserValidator gibt keine ErrorMessage zurück?“, typo3.net, https://www.typo3.net/d/103503-eigener-customuservalidator-gibt-keine-errormessage-zurueck
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
