Mehrsprachige Fehlerausgabe

Mehrsprachige Fehlerausgabe von Extbase Validatoren im Fluid Frontend

Da ein Validator momentan in Extbase nur einen String, Errorcode und ein Array an Argumenten zurück gibt ist die Errormassage ein englischer Text.

Man kann sich jedoch den Errorcode und den Translate ViewHelper zu nutze machen um diese Nachrichten zu lokalisieren.

Der Fluid Part hängt von der TYPO3 Version und der TypoScript Option plugin.tx_[extensionname].features.rewrittenPropertyMapper, die mit TYPO3 4.6 zum verwenden des neu geschriebenen Property Mappers eingeführt wurde, ab.

Ist die TYPO3 Version 4.6 oder größer und die Eigenschaft gesetzt, muss der ValidationResults ViewHelper <f:form.validationResults /> verwendet werden, da der Errors ViewHelper <f:form.errors /> keine Ausgabe erzeugt.

Der ViewHelper f:form.errors ist seit Fluid 1.4.0 deprecated und wird mit Fluid 6.1 (Bestandteil von TYPO3 6.1) entfernt.

Es gibt hierzu den Forge Artikel http://forge.typo3.org/projects/typo3v4-mvc/wiki/Translated_validation_error_messages_for_Fluid.

 

TYPO3 kleiner gleich 4.5 oder TYPO3 größer 4.5 und rewrittenPropertyMapper = 0

<f:form.errors>
	<div class="error">
		<ul>
			<f:for each="{error.errors}" as="errorProperties">
				<li>
					<f:translate key="tx_[extensionname]_domain_model_[modelname].{errorProperties.propertyName}"/>
					<ul>
						<f:for each="{errorProperties.errors}" as="propertyError">
							<li>
								<f:translate
										key="error.{propertyError.code}"
										arguments="{propertyError.arguments}">{propertyError.message}
								</f:translate>
							</li>
						</f:for>
					</ul>
				</li>
			</f:for>
		</ul>
	</div>
</f:form.errors>

TYPO3 >= 4.6 und rewrittenPropertyMapper = 1

<!-- START Partial FormErrors -->
<f:form.validationResults for="{for}">
	<f:if condition="{validationResults.flattenedErrors}">
		<div class="error">
			<ul>
				<f:for each="{validationResults.flattenedErrors}" key="propertyName" as="errors">
					<li>
						<f:translate key="tx_[extensionname]_domain_model_[modelname].{propertyName}">{propertyName}</f:translate>
						<ul>
							<f:for each="{errors}" as="propertyError">
								<li>
									<f:translate
											key="error.{propertyError.code}"
											arguments="{propertyError.arguments}">{propertyError.message}
									</f:translate>
								</li>
							</f:for>
						</ul>
					</li>
				</f:for>
			</ul>
		</div>
	</f:if>
</f:form.validationResults>
<!-- ENDE partial FormErrors -->

<!-- Rendern des Partials im NewAction Template -->
<!-- Der übergebene String muss mit dem Namen der Variable der CreateAction übereinstimmen -->
<f:render partial="FormErrors" arguments="{for: 'newModel'}" />

locallang.xml für die Fehlerausgabe

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3locallang>
	<meta type="array">
		<type>module</type>
		<description>Language labels for the extbase errors</description>
	</meta>
	<data type="array">
		<languageKey index="default" type="array">
			<label index="error.1221559976">The given subject was not a valid email address.</label>
			<label index="error.1238108067">The length of the given string was not between %1$s and %2$s characters.</label>
			<label index="error.1238108068">The length of given string was shorter than %1$s characters.</label>
			<label index="error.1238108069">The length of given string exceeded %1$s characters.</label>
		</languageKey>
		<languageKey index="de" type="array">
			<label index="error.1221559976">Die angegebene Zeichenfolge war keine gültige E-Mail-Adresse.</label>
			<label index="error.1238108067">Die Länge der angegebene Zeichenfolge war nicht zwischen %1$s und %2$s Zeichen.</label>
			<label index="error.1238108068">Die Länge der angegebene Zeichenfolge unterschritt %1$s Zeichen.</label>
			<label index="error.1238108069">Die Länge der angegebene Zeichenfolge überschritt %1$s Zeichen.</label>
		</languageKey>
	</data>
</T3locallang>

Error Flash Message unterdrücken

// Im jeweiligen Controller die getErrorFlashMessage überschreiben
/**
 * Deactivate errorFlashMessage
 *
 * @return bool|string
 */
public function getErrorFlashMessage() {
	return FALSE;
}
Stichwörter zu dieser Seite: 
Generator: TYPO3 CMS 6.2
Google Page Speed
@t3easy_de folgen
Google+