Zend_View-Helpers-Currency.xml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.view.helpers.initial.currency">
  5. <title>Currency Helfer</title>
  6. <para>
  7. Das anzeigen von lokalisierten Währungswerten ist eine übliche Aufgabe; der View Helfer
  8. <classname>Zend_Currency</classname> dient dazu diese Aufgabe zu vereinfachen. Siehe auch
  9. die <link linkend="zend.currency.introduction">Dokumentation von Zend_Currency</link> für
  10. Details über dieses Lokalisierungs-Feature. In diesem Abschnitt fokusieren wir uns nur auf
  11. die Verwendung des View Helfers.
  12. </para>
  13. <para>
  14. Es gibt verschiedene Wege um den <emphasis>Currency</emphasis> View Helfer zu initiieren:
  15. </para>
  16. <itemizedlist>
  17. <listitem>
  18. <para>
  19. Registriert, über eine vorher in <classname>Zend_Registry</classname> registrierte
  20. Instanz:
  21. </para>
  22. </listitem>
  23. <listitem>
  24. <para>
  25. Im Nachhinein, über das Fluent Interface.
  26. </para>
  27. </listitem>
  28. <listitem>
  29. <para>
  30. Direkt, über Instanzierung der Klasse.
  31. </para>
  32. </listitem>
  33. </itemizedlist>
  34. <para>
  35. Eine registrierte Instanz von <classname>Zend_Currency</classname> ist der vorgeschlagene
  36. Weg für diesen Helfer. Wenn man dies macht kann die Währung welche verwendet werden soll
  37. ausgewählt werden bevor der Adapter der Registry hinzugefügt wird.
  38. </para>
  39. <para>
  40. Es gibt verschiedene Wege die gewünschte Währung auszuwählen. Erstens kann man einfach einen
  41. Währungs-String übergeben; alternativ kann man ein Gebietsschema spezifizieren. Der
  42. vorgeschlagene Weg ist die Verwendung eines Gebietsschemas, da diese Information automatisch
  43. erkannt und über den <acronym>HTTP</acronym> Client Header ausgewählt wird wenn ein Benutzer
  44. auf die Anwendung zugreift. Und es stellt sicher das die angebotene Währung mit seinem
  45. Gebietsschema übereinstimmt.
  46. </para>
  47. <note>
  48. <para>
  49. Wir sprechen von "Gebietsschemas" statt von "Sprachen" weil Sprachen, basierend auf der
  50. geographischen Region in welcher Sie verwendet werden, sehr unterschiedlich sein können.
  51. Zum Beispiel wird Englisch in unterschiedlichen Dialekten gesprochen: Brittisches
  52. Englisch, Amerikanisches Englisch, usw. Da eine Währung immer mit einem Land
  53. korreliert muss ein voll-qualifiziertes Gebietsschema angegeben werden. Dies bedeutet
  54. dass beides, sowohl die Sprache <emphasis>als auch</emphasis> die Region angegeben
  55. werden müssen. Deswegen sagen wir "Gebietsschema" statt "Sprache".
  56. </para>
  57. </note>
  58. <example id="zend.view.helpers.initial.currency.registered">
  59. <title>Registrierte Instanz</title>
  60. <para>
  61. Um eine registrierte Instanz zu verwenden muss einfach eine Instanz von
  62. <classname>Zend_Currency</classname> erstellt und in
  63. <classname>Zend_Registry</classname> registriert werden, wobei der Schlüssel
  64. <classname>Zend_Currency</classname> zu verwenden ist.
  65. </para>
  66. <programlisting language="php"><![CDATA[
  67. // Unsere Beispielwährung
  68. $currency = new Zend_Currency('de_AT');
  69. Zend_Registry::set('Zend_Currency', $currency);
  70. // In der View
  71. echo $this->currency(1234.56);
  72. // Gibt '€ 1.234,56' zurück
  73. ]]></programlisting>
  74. </example>
  75. <para>
  76. Wenn man das Fluent Interface verwenden will, kann man auch eine Instanz in der View
  77. erstellen und den Helfer im Nachhinein konfigurieren.
  78. </para>
  79. <example id="zend.view.helpers.initial.currency.afterwards">
  80. <title>In der View</title>
  81. <para>
  82. Um das Fluent Interface zu verwenden muss eine Instanz von
  83. <classname>Zend_Currency</classname> erstellt, der Helfer ohne Parameter aufgerufen, und
  84. dann die Methode <methodname>setCurrency()</methodname> aufgerufen werden.
  85. </para>
  86. <programlisting language="php"><![CDATA[
  87. // In der View
  88. $currency = new Zend_Currency('de_AT');
  89. $this->currency()->setCurrency($currency)->currency(1234.56);
  90. // Gibt '€ 1.234,56' zurück
  91. ]]></programlisting>
  92. </example>
  93. <para>
  94. Wenn man den Helfer ohne <classname>Zend_View</classname> verwenden will kann man Ihn auch
  95. direkt verwenden.
  96. </para>
  97. <example id="zend.view.helpers.initial.currency.directly.example-1">
  98. <title>Direkte Verwendung</title>
  99. <programlisting language="php"><![CDATA[
  100. // Unsere Beispielwährung
  101. $currency = new Zend_Currency('de_AT');
  102. // Den Helfer initiieren
  103. $helper = new Zend_View_Helper_Currency($currency);
  104. echo $helper->currency(1234.56); // Gibt '€ 1.234,56' zurück
  105. ]]></programlisting>
  106. </example>
  107. <para>
  108. Wie bereits gesehen wird die Methode <methodname>currency()</methodname> verwendet um den
  109. Währungs-String zurückzugeben. Sie muss nur mit dem Wert aufgerufen werden den man als
  110. Währung angezeigt haben will. Sie akzeptiert auch einige Optionen welche verwendet werden
  111. können um das Verhalten des Helfers bei der Ausgabe zu ändern.
  112. </para>
  113. <example id="zend.view.helpers.initial.currency.directly.example-2">
  114. <title>Direkte Verwendung</title>
  115. <programlisting language="php"><![CDATA[
  116. // Unsere Beispielwährung
  117. $currency = new Zend_Currency('de_AT');
  118. // Den Helfer initiieren
  119. $helper = new Zend_View_Helper_Currency($currency);
  120. echo $helper->currency(1234.56); // Gibt '€ 1.234,56' zurück
  121. echo $helper->currency(1234.56, array('precision' => 1));
  122. // Gibt '€ 1.234,6' zurück
  123. ]]></programlisting>
  124. </example>
  125. <para>
  126. Für Details über die vorhandenen Optionen sollte man in
  127. <classname>Zend_Currency</classname>'s <methodname>toCurrency()</methodname> Methode
  128. nachsehen.
  129. </para>
  130. </sect3>