Zend_Validate-Messages.xml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.validate.messages">
  5. <title>Prüfungsmeldungen</title>
  6. <para>
  7. Jede Prüfung die auf <classname>Zend_Validate</classname> basiert, bietet im Fall einer
  8. fehlgeschlagen Prüfung eine oder mehrere Meldungen an. Diese Information kann verwendet
  9. werden um eigene Meldungen zu setzen, oder bestehende Meldungen welche eine Prüfung
  10. zurückgeben könnte, auf etwas anderes zu übersetzen.
  11. </para>
  12. <para>
  13. Diese Prüfmeldungen sind Konstanten welche am Beginn jeder Prüfklasse gefunden werden
  14. können. Sehen wir uns für ein beschreibendes Beispiel
  15. <classname>Zend_Validate_GreaterThan</classname> an:
  16. </para>
  17. <programlisting language="php"><![CDATA[
  18. protected $_messageTemplates = array(
  19. self::NOT_GREATER => "'%value%' is not greater than '%min%'",
  20. );
  21. ]]></programlisting>
  22. <para>
  23. Wie man siehr referenziert die Konstante <constant>self::NOT_GREATER</constant> auf den
  24. Fehler und wird als Schlüssel verwendet. Und die Nachricht selbst ist der Wert des
  25. Nachrichtenarrays.
  26. </para>
  27. <para>
  28. Man kann alle Nachrichten Templates einer Prüfung erhalten indem man die Methode
  29. <methodname>getMessageTemplates()</methodname> verwendet. Diese gibt das oben stehende array
  30. zurück, welches alle Nachrichten enthält die eine Prüfung im Falle einer fehlgeschlagenen
  31. Prüfung zurückgeben kann.
  32. </para>
  33. <programlisting language="php"><![CDATA[
  34. $validator = new Zend_Validate_GreaterThan();
  35. $messages = $validator->getMessageTemplates();
  36. ]]></programlisting>
  37. <para>
  38. Indem die Methode <methodname>setMessage()</methodname> verwendet wird kann man eine andere
  39. Meldung definieren die im Fall des spezifizierten Fehlers zurückgegeben werden.
  40. </para>
  41. <programlisting language="php"><![CDATA[
  42. $validator = new Zend_Validate_GreaterThan();
  43. $validator->setMessage(
  44. 'Bitte einen kleineren Wert angeben',
  45. Zend_Validate_GreaterThan::NOT_GREATER
  46. );
  47. ]]></programlisting>
  48. <para>
  49. Der zweite Parameter definiert den Fehler der überschrieben wird. Wenn man diesen Parameter
  50. nicht angibt, wird die angegebene Meldung für alle möglichen Fehler dieser Prüfung gesetzt.
  51. </para>
  52. <sect2 id="zend.validate.messages.pretranslated">
  53. <title>Verwendung vor-übersetzter Prüfungsmeldungen</title>
  54. <para>
  55. Zend Framework wird mit mehr als 45 unterschiedlichen Prüfern und mehr als 200
  56. Fehlermeldungen ausgeliefert. Es kann eine zeitraubende Aufgabe sein alle diese
  57. Meldungen zu übersetzen. Aber der Bequemlichkeit halber kommt Zend Framework mit
  58. bereits vor-übersetzten Prüfmeldungen. Diese können im Pfad
  59. <filename>/resources/languages</filename> der eigenen Zend Framework Installation
  60. gefunden werden.
  61. </para>
  62. <note>
  63. <title>Verwendeter Pfad</title>
  64. <para>
  65. Die Ressource Dateien liegen ausserhalb des Bibliothekspfads weil alle Übersetzungen
  66. ausserhalb dieses Pfades liegen sollten.
  67. </para>
  68. </note>
  69. <para>
  70. Um also alle Prüfmeldungen zum Beispiel auf Deutsch zu übersetzen muss man nur einen
  71. Übersetzer an <classname>Zend_Validate</classname> anhängen der diese Ressourcedateien
  72. verwendet.
  73. </para>
  74. <programlisting language="php"><![CDATA[
  75. $translator = new Zend_Translate(
  76. array(
  77. 'adapter' => 'array',
  78. 'content' => '/resources/languages',
  79. 'locale' => $language,
  80. 'scan' => Zend_Translate::LOCALE_DIRECTORY
  81. )
  82. );
  83. Zend_Validate_Abstract::setDefaultTranslator($translator);
  84. ]]></programlisting>
  85. <note>
  86. <title>Verwendeter Übersetzungsadapter</title>
  87. <para>
  88. Als Übersetzungsadapter hat Zend Framework den Array Adapter ausgewählt. Er ist
  89. einfach zu bearbeiten und sehr schnell erstellt.
  90. </para>
  91. </note>
  92. <note>
  93. <title>Unterstützte Sprachen</title>
  94. <para>
  95. Dieses Feature ist sehr jung, und deshalb ist die Anzahl der unterstützten Sprachen
  96. nicht sehr komplett. Neue Sprachen werden mit jedem Release hinzugefügt. Zusätzlich
  97. können die existierenden Ressourcedateien verwendet werden um eigene Übersetzungen
  98. durchzuführen.
  99. </para>
  100. <para>
  101. Man kann diese Ressource Dateien auch verwenden um existierende Übersetzungen
  102. umzuschreiben. Man muss diese Dateien also nicht selbst per Hand erstellen.
  103. </para>
  104. </note>
  105. </sect2>
  106. <sect2 id="zend.validate.messages.limitation">
  107. <title>Begrenzen der Größe einer Prüfungsmeldung</title>
  108. <para>
  109. Manchmal ist es notwendig die maximale Größe die eine Prüfungsmeldung haben kann zu
  110. begrenzen. Zum Beispiel wenn die View nur eine maximale Größe von 100 Zeichen für die
  111. Darstellung auf einer Zeile erlaubt. Um die Verwendung zu vereinfachen, ist
  112. <classname>Zend_Validate</classname> dazu in der Lage die maximal zurückgegebene
  113. Größe einer Prüfnachricht zu begrenzen.
  114. </para>
  115. <para>
  116. Um die aktuell gesetzte Größe zu erhalten ist
  117. <methodname>Zend_Validate::getMessageLength()</methodname> zu verwenden. Wenn diese
  118. -1 ist, dann wird die zurückgegebene Nachricht nicht begrenzt. Das ist das
  119. Standardverhalten.
  120. </para>
  121. <para>
  122. Um die Größe der zurückgegebenen Nachrichten zu begrenzen ist
  123. <methodname>Zend_Validate::setMessageLength()</methodname> zu verwenden. Man kann diese
  124. auf jede benötigte Integer Größe setzen. Wenn die zurückzugebende Nachricht die
  125. gesetzte Größe überschreitet, dann wird die Nachricht abgeschnitten und der String
  126. '<emphasis>...</emphasis>' wird statt dem Rest der Nachricht hinzugefügt.
  127. </para>
  128. <programlisting language="php"><![CDATA[
  129. Zend_Validate::setMessageLength(100);
  130. ]]></programlisting>
  131. <note>
  132. <title>Wo wird dieser Parameter verwendet?</title>
  133. <para>
  134. Die gesetzte Länge der Nachrichten wird für alle Prüfungen verwendet, sogar für
  135. selbstdefinierte, solange Sie <classname>Zend_Validate_Abstract</classname>
  136. erweitern.
  137. </para>
  138. </note>
  139. </sect2>
  140. </sect1>