Fehlermeldung mit Fluid direkt neben dem Feld ausgeben

In Fluid-Templates, die in TYPO3 Extensions mit Extbase verwendet werden, werden die Fehlermeldungen in der Regel in einem Block ausgegeben. Mit <f:form.errors /> können die Fehlermeldungen ausgegeben werden, die beim Validieren des Formulars aufgetreten sind. Der Kickstarter erstellt dabei einen Schnipsel, der ungefähr so aussieht:

<f:form.errors>
	<div class="error">
		{error.message}
		<f:if condition="{error.propertyName}">
			<p>
				<strong>{error.propertyName}</strong>:
				<f:for each="{error.errors}" as="errorDetail">
					{errorDetail.message}
				</f:for>
			</p>
		</f:if>
	</div>
</f:form.errors>

Und mit <f:render partial=”FormErrors” /> wird dieses Partial in einem Template verwendet und gibt alle Fehler aus. Der Wert propertyName enthält in der äußeren Schleife den Namen des Formulars, im Beispiel Simpleblog also Blog oder Post. Und in der inneren Schleife den Namen des Feldes, z.B. title oder description.

Was ist aber, wenn man die Fehlermeldung direkt neben dem Feld ausgeben möchte. Es gibt natürlich die Möglichkeit einen ViewHelper zu schreiben. Ich wollte aber ohne zusätzlichen ViewHelper auskommen. Das Ergebnis ist ein Partial FieldError:

<f:form.errors for="{formName}">
    <f:if condition="{0:error.propertyName} == {0:'{fieldName}'}">
        <f:for each="{error.errors}" as="errorItem">
            <strong style="color: red;">{errorItem.message}</strong>
        </f:for>
    </f:if>
</f:form.errors>

Diese Partial kann in einem weiteren Partial oder einem Template einfach aufgerufen werden und gibt die Fehlermeldungen für ein Feld aus.

<f:render partial="FieldError" arguments="{ errors: errors, formName: 'blog', fieldName: 'title' }" />

Der erste Parameter sind die Fehlermelodungen, der zweite Parameter der Name des Formulars und der dritte der Name des Feldes.

1 Kommentar

  1. jok

    Ohne Schleife geht es effizienter:
    für das feld ‘Titel’ im ‘Blog’ Formular

    und in FieldError.html

    Wir verwenden eine universelle locallang, um Fehlerausgaben gesammelt zu übersetzen.