Hmm... Der Vorschlag gehört in den Bereich "Form-Handling" bzw. genauer "Form-Validierung".
Mir gefällt ein Teil des Vorschlags gut:
Wenn man nur {showFormErrors} in dem jeweiligen TPL verwendet und dafür eine Smarty Funktion erstellt.
TPL:
{showFormErrors}
Smarty Plugin:
1.Prüfen, ob FormErrors Array gesetzt
2.Wenn ja, dann foreach Element des Arrays
3.Fehler auflisten
Damit wäre die Ausgabe von Fehlern in einer Fehlerliste überhalb oder unterhalb des Templates möglich.
Vorher das FormErrors Array befüllen:
Module:
Bedingung nicht erfüllt,
$view->setFormError(errorname, errorcode);
Damit würde ich die Methode setFormError in den View oder den allgemeiner Modulecontroller stecken.
Ein anderer Ansatz im TPL wäre folgender (der ließe sich dann auch gut mit JS verbinden):
<td>
{if (isset($errors.title))} <div class="error"> {/if}
<input type="text" value="{news.title}" />
{if (isset($errors.title))}<br/>{$errors.title}</div>{/if}
</td>
Ich sehe zwei Dinge als Problem.
Erstens, im Hinblick auf die clientseitige Validierung mittels Javascript:
Als gedanklichen Ausgangspunkt können wir festhalten, dass wir beide Validierungsarten brauchen: clientseitig (JS), wegen des Komforts der direkten Fehlerkorrektur ohne Formularsubmit und serverseitig (PHP), wegen Sicherheit und Typ-Richtigkeit der abzulegenden Daten.
Bei JS wird der Fehler oft direkt beim Inputfeld angezeigt. Meistens wird dieses farbig eingefärbt (rot/rosa) um das fehlerhaft befüllte Eingabefehld hervorzuheben. Die Fehlerausgabe erfolgt also direkt an dem Inputfeld.Bei unserer Methode wäre die Errormessages überhalb oder unterhalb der ganzen Forms.
Das müsste man irgendwie verbinden, denn sonst definiert man die Errormessages doppelt. Kann man das irgendwie verbinden?
Zweitens, das ganze Thema Form Validierung und Rückmeldung ist recht umfangreich!
Wollen wir das selbst lösen oder eine Klasse nehmen? Wenn Klasse, welche?
Doctrine? Unsere Inputfilter Klasse? Die bekannte PHP Inputfilter? Oder eine von Smarty, wie z.B.
SmartyValidate. Oder PEAR::HTML_QuickForm (creating, validating, processing HTML forms).