1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect2 id="zend.validate.set.post_code">
<title>PostCode</title>
<para>
<classname>Zend_Validate_PostCode</classname> erlaubt es zu eruieren ob ein angegebener
Wert eine gültige Postleitzahl ist. Postleitzahlen sind spezifisch für Städte und in einigen
Gebietsschemata auch als <acronym>ZIP</acronym> Codes bezeichnet.
</para>
<para>
<classname>Zend_Validate_PostCode</classname> kennt mehr als 160 unterschiedliche Formate
für Postleitzahlen. Um das richtige Format auszuwählen gibt es 2 Wege. Man kann entweder
ein voll qualifiziertes Gebietsschema verwenden, oder ein eigenes Format manuall setzen.
</para>
<para>
Die Verwendung eines Gebietsschemas ist bequemer da Zend Framework bereits die
entsprechenden Formate für Postleitzahlen für jedes Gebietsschema kennt; aber muss man
ein voll qualifiziertes Gebietsschema verwenden (eines das eine Region spezifiziert) damit
es funktioniert. Das Gebietsschema "de" zum Beispiel ist zwar ein Gebietsschema, kann aber
nicht mit <classname>Zend_Validate_PostCode</classname> verwendet werden da es keine
Region enthält; "de_AT" andererseits würde ein gültiges Gebietsschema sein da es den
Region Code spezifiziert ("AT", für Österreich).
</para>
<programlisting language="php"><![CDATA[
$validator = new Zend_Validate_PostCode('de_AT');
]]></programlisting>
<para>
Wenn man das Gebietsschema nicht selbst setzt, dann verwendet
<classname>Zend_Validate_PostCode</classname> das anwendungsweit gesetzte Gebietsschema,
oder wenn keines vorhanden ist, das Gebietsschema welches von
<classname>Zend_Locale</classname> zurückgegeben wird.
</para>
<programlisting language="php"><![CDATA[
// Anwendungsweites Gebietsschema in der Bootstrap
$locale = new Zend_Locale('de_AT');
Zend_Registry::set('Zend_Locale', $locale);
$validator = new Zend_Validate_PostCode();
]]></programlisting>
<para>
Man kann das Gebietsschema auch im Nachhinein ändern, indem man
<methodname>setLocale()</methodname> aufruft. Und natürlich kann man das aktuelle
Gebietsschema erhalten indem <methodname>getLocale()</methodname> aufgerufen wird.
</para>
<programlisting language="php"><![CDATA[
$validator = new Zend_Validate_PostCode('de_AT');
$validator->setLocale('en_GB');
]]></programlisting>
<para>
Postleitzahlen Formate selbst sind einfache Regular Expression Strings. Wenn das
internationale Postleitzahlen Format, welches durch das Setzen des Gebietsschemas verwendet
wird, den eigenen Bedüfnissen nicht entspricht, dann kann man ein Format auch manuell setzen
indem <methodname>setFormat()</methodname> aufgerufen wird.
</para>
<programlisting language="php"><![CDATA[
$validator = new Zend_Validate_PostCode('de_AT');
$validator->setFormat('AT-\d{5}');
]]></programlisting>
<note>
<title>Konventionen für selbst definierte Formate</title>
<para>
Wenn selbst definierte Formate verwendet werden sollten die Start-
(<command>'/^'</command>) und Endetags (<command>'$/'</command>) nicht angegeben werden.
Sie werden automatisch hinzugefügt.
</para>
<para>
Man sollte darauf achtgeben das Postleitzahlen Werte immer auf einer strikte Art
geprüft werden. Das bedeutet das Sie alleinstehend geschrieben werden müssen, ohne
zusätzliche Zeichen, wenn diese nicht durch das Format abgedeckt werden.
</para>
</note>
<sect3 id="zend.validate.set.post_code.constructor">
<title>Optionen des Constructors</title>
<para>
Grundsätzlich kann man dem Contructor von <classname>Zend_Validate_PostCode</classname>
entweder ein <classname>Zend_Locale</classname> Objekt, oder einen String der ein voll
qualifiziertes Gebietsschema repräsentiert, angeben.
</para>
<programlisting language="php"><![CDATA[
$validator = new Zend_Validate_PostCode('de_AT');
$validator = new Zend_Validate_PostCode($locale);
]]></programlisting>
<para>
Zusätzlich kann man dem Contructor entweder ein Array oder ein
<classname>Zend_Config</classname> Objekt übergeben. Wenn man das tut, muss man
entweder den Schlüssel "locale" oder "format" verwenden; diese werden verwendet um die
betreffenden Werte im Prüfobjekt zu setzen.
</para>
<programlisting language="php"><![CDATA[
$validator = new Zend_Validate_PostCode(array(
'locale' => 'de_AT',
'format' => 'AT_\d+'
));
]]></programlisting>
</sect3>
<sect3 id="zend.validate.set.post_code.options">
<title>Unterstützte Optionen für Zend_Validate_PostCode</title>
<para>
Die folgenden Optionen werden für <classname>Zend_Validate_PostCode</classname>
unterstützt:
</para>
<itemizedlist>
<listitem>
<para>
<emphasis><property>format</property></emphasis>: Setzt das Postleitzahl-Format
welches für die Prüfung der Eingabe verwendet werden soll.
</para>
</listitem>
<listitem>
<para>
<emphasis><property>locale</property></emphasis>: Setzt ein Gebietsschema von
dem die Postleitzahl genommen wird.
</para>
</listitem>
</itemizedlist>
</sect3>
</sect2>
|