Fehler im allgemeinen Validator an ein Feld hängen

(attach object errors to a specific field)

Es gibt die Möglichkeit in Extbase Validatoren für Objekte zu definieren. Wenn man also ein Model mit dem Namen “Domain_Model_ObjectModel” hat, wird falls vorhanden der Validator mit dem Namen “Domain_Validator_ObjectValidator”. Dabei wird nachdem die einzelnen Felder geprüft wurden mit dem angegebenen Validator das komplette Objekt überprüft. So kann man wie in meinem Beispiel feststellen, ob der Titel bereits vergeben worden ist (Unique). Normalweise wird die Fehlermeldung bei einer nicht erfolgreichen Validierung an das Objekt drangehängt. Da ich die Fehlermeldungen neben dem Feld ausgebe (siehe dazu Fehlermeldung mit Fluid direkt neben dem Feld ausgeben), wollte ich den Fehler an das Attribut title dranhängen.

class Tx_MyExtension_Domain_Validator_ObjectValidator 
	extends Tx_Extbase_Validation_Validator_AbstractValidator
{
 
    /**
     * Check if there is a object with the same name
     * @param  Tx_MyExtension_Domain_Model_Object $object
     * @return bool
     */
	public function isValid($object) {
		$objectRepository = t3lib_div::makeInstance('Tx_MyExtension_Domain_Repository_ObjectRepository');
		$sameNameCount = $objectRepository->countByTitleExcludeUid($object->getTitle(), $object->getUid());
		if($sameNameCount > 0) {
			if (!isset($this->errors['title'])) {
				$this->errors['title'] = new Tx_Extbase_Validation_PropertyError('title');
			}
			$error = new Tx_Extbase_Validation_Error(Tx_Extbase_Utility_Localization::translate('error.object_title_exists', 'MyExtension'), '1312448731');
			$this->errors['title']->addErrors(array($error));
			return FALSE;
		}
		return TRUE;
    }
 
}

Kommentare sind geschlossen.