| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.validate.messages">
- <title>Prüfungsmeldungen</title>
- <para>
- Jede Prüfung die auf <classname>Zend_Validate</classname> basiert, bietet im Fall einer
- fehlgeschlagen Prüfung eine oder mehrere Meldungen an. Diese Information kann verwendet
- werden um eigene Meldungen zu setzen, oder bestehende Meldungen welche eine Prüfung
- zurückgeben könnte, auf etwas anderes zu übersetzen.
- </para>
- <para>
- Diese Prüfmeldungen sind Konstanten welche am Beginn jeder Prüfklasse gefunden werden
- können. Sehen wir uns für ein beschreibendes Beispiel
- <classname>Zend_Validate_GreaterThan</classname> an:
- </para>
- <programlisting language="php"><![CDATA[
- protected $_messageTemplates = array(
- self::NOT_GREATER => "'%value%' is not greater than '%min%'",
- );
- ]]></programlisting>
- <para>
- Wie man siehr referenziert die Konstante <constant>self::NOT_GREATER</constant> auf den
- Fehler und wird als Schlüssel verwendet. Und die Nachricht selbst ist der Wert des
- Nachrichtenarrays.
- </para>
- <para>
- Man kann alle Nachrichten Templates einer Prüfung erhalten indem man die Methode
- <methodname>getMessageTemplates()</methodname> verwendet. Diese gibt das oben stehende array
- zurück, welches alle Nachrichten enthält die eine Prüfung im Falle einer fehlgeschlagenen
- Prüfung zurückgeben kann.
- </para>
- <programlisting language="php"><![CDATA[
- $validator = new Zend_Validate_GreaterThan();
- $messages = $validator->getMessageTemplates();
- ]]></programlisting>
- <para>
- Indem die Methode <methodname>setMessage()</methodname> verwendet wird kann man eine andere
- Meldung definieren die im Fall des spezifizierten Fehlers zurückgegeben werden.
- </para>
- <programlisting language="php"><![CDATA[
- $validator = new Zend_Validate_GreaterThan();
- $validator->setMessage(
- 'Bitte einen kleineren Wert angeben',
- Zend_Validate_GreaterThan::NOT_GREATER
- );
- ]]></programlisting>
- <para>
- Der zweite Parameter definiert den Fehler der überschrieben wird. Wenn man diesen Parameter
- nicht angibt, wird die angegebene Meldung für alle möglichen Fehler dieser Prüfung gesetzt.
- </para>
- <sect2 id="zend.validate.messages.pretranslated">
- <title>Verwendung vor-übersetzter Prüfungsmeldungen</title>
- <para>
- Zend Framework wird mit mehr als 45 unterschiedlichen Prüfern und mehr als 200
- Fehlermeldungen ausgeliefert. Es kann eine zeitraubende Aufgabe sein alle diese
- Meldungen zu übersetzen. Aber der Bequemlichkeit halber kommt Zend Framework mit
- bereits vor-übersetzten Prüfmeldungen. Diese können im Pfad
- <filename>/resources/languages</filename> der eigenen Zend Framework Installation
- gefunden werden.
- </para>
- <note>
- <title>Verwendeter Pfad</title>
- <para>
- Die Ressource Dateien liegen ausserhalb des Bibliothekspfads weil alle Übersetzungen
- ausserhalb dieses Pfades liegen sollten.
- </para>
- </note>
- <para>
- Um also alle Prüfmeldungen zum Beispiel auf Deutsch zu übersetzen muss man nur einen
- Übersetzer an <classname>Zend_Validate</classname> anhängen der diese Ressourcedateien
- verwendet.
- </para>
- <programlisting language="php"><![CDATA[
- $translator = new Zend_Translate(
- array(
- 'adapter' => 'array',
- 'content' => '/resources/languages',
- 'locale' => $language,
- 'scan' => Zend_Translate::LOCALE_DIRECTORY
- )
- );
- Zend_Validate_Abstract::setDefaultTranslator($translator);
- ]]></programlisting>
- <note>
- <title>Verwendeter Übersetzungsadapter</title>
- <para>
- Als Übersetzungsadapter hat Zend Framework den Array Adapter ausgewählt. Er ist
- einfach zu bearbeiten und sehr schnell erstellt.
- </para>
- </note>
- <note>
- <title>Unterstützte Sprachen</title>
- <para>
- Dieses Feature ist sehr jung, und deshalb ist die Anzahl der unterstützten Sprachen
- nicht sehr komplett. Neue Sprachen werden mit jedem Release hinzugefügt. Zusätzlich
- können die existierenden Ressourcedateien verwendet werden um eigene Übersetzungen
- durchzuführen.
- </para>
- <para>
- Man kann diese Ressource Dateien auch verwenden um existierende Übersetzungen
- umzuschreiben. Man muss diese Dateien also nicht selbst per Hand erstellen.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.validate.messages.limitation">
- <title>Begrenzen der Größe einer Prüfungsmeldung</title>
- <para>
- Manchmal ist es notwendig die maximale Größe die eine Prüfungsmeldung haben kann zu
- begrenzen. Zum Beispiel wenn die View nur eine maximale Größe von 100 Zeichen für die
- Darstellung auf einer Zeile erlaubt. Um die Verwendung zu vereinfachen, ist
- <classname>Zend_Validate</classname> dazu in der Lage die maximal zurückgegebene
- Größe einer Prüfnachricht zu begrenzen.
- </para>
- <para>
- Um die aktuell gesetzte Größe zu erhalten ist
- <methodname>Zend_Validate::getMessageLength()</methodname> zu verwenden. Wenn diese
- -1 ist, dann wird die zurückgegebene Nachricht nicht begrenzt. Das ist das
- Standardverhalten.
- </para>
- <para>
- Um die Größe der zurückgegebenen Nachrichten zu begrenzen ist
- <methodname>Zend_Validate::setMessageLength()</methodname> zu verwenden. Man kann diese
- auf jede benötigte Integer Größe setzen. Wenn die zurückzugebende Nachricht die
- gesetzte Größe überschreitet, dann wird die Nachricht abgeschnitten und der String
- '<emphasis>...</emphasis>' wird statt dem Rest der Nachricht hinzugefügt.
- </para>
- <programlisting language="php"><![CDATA[
- Zend_Validate::setMessageLength(100);
- ]]></programlisting>
- <note>
- <title>Wo wird dieser Parameter verwendet?</title>
- <para>
- Die gesetzte Länge der Nachrichten wird für alle Prüfungen verwendet, sogar für
- selbstdefinierte, solange Sie <classname>Zend_Validate_Abstract</classname>
- erweitern.
- </para>
- </note>
- </sect2>
- </sect1>
|