Symfony validieren Telefon im Formularfeld
Ich habe Symfony 2.6 und ein Formular für Persönliche Daten in Formular-Feld-Telefon, wie rhis
+38 (918) 280-1594
und wenn die Entwickler schreiben, " _ " oder mehr Ziffern, Leerzeichen. Wie in action ich dies überprüfen ?
Wie die Entwickler schreiben
+38 (918) 2 801_594
Und ich in der DB
+38(918)2801594
was sind die Prozesse und Entscheidungen oder Bündel um dieses problem zu lösen?
->add('telephone', null, array('label' => 'Telephone', 'max_length' => 255, 'required' => false));
$builder->get('telephone')->addModelTransformer(new CallbackTransformer(
//transform <br/> to \n so the textarea reads easier
function ($originalDescription) {
return preg_replace('/[^0-9()]+/', "", $originalDescription);
},
function ($submittedDescription) {
//remove most HTML tags (but not br,p)
$cleaned = strip_tags($submittedDescription, '<br><br/><p>');
//transform any \n to real <br/>
return str_replace("\n", '<br/>', $cleaned);
}
));
Aber wie funktioniert es? Ich Schreibe Telefon 65454### und das "#" schreiben in meiner DB, das ist falsch. Warum habe ich nicht Verstanden??? Und ich brauche bestimmt die Anzahl der Ziffern (12 Ziffern). Vielleicht Beispiel bitte.
Ich post +30632666$$# und in DB setzen diese +30632666$$# aber im Formular sichtbar, das 30632666 das ist genau das Brauch ich in meiner DB, ich brauche legen Sie in der Datenbank der richtigen Telefon-und limit-13 chars - eine " + " - und 12 - digitale
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach der Installation der MisdPhoneNumberBundle, können Sie die bundle-validator:
Sollten Sie verwenden MisdPhoneNumberBundle, es gibt Ihnen alles, was Sie brauchen in Bezug auf Telefonnummern und Symfony.
->add('phone_number', 'tel', array('default_region' => 'GB', 'format' => PhoneNumberFormat::NATIONAL))
und nun FehlerVerstehe ich nicht, was meinst du versuchen zu ersetzen
#
durch etwas anderes. Wenn dies derpreg_replace
nennen, ist es nicht erstaunlich, dass es nicht funktioniert, wie Sie sich für ein string, der wie folgt aussieht:Wenn Sie Sie ersetzen möchten
<br/>
durch\n
wie der Kommentar sagt, die Sie benötigen, um dieses Muster:Hinweis: die
/
bei start und Ende begrenzen die Muster und diei
am Ende bedeutet in jedem Fall übereinstimmen.Wenn Sie Sie ersetzen möchten
#
Räume und_
ich denke, dass das beste sein würde, um zu ersetzen Sie alle Zeichen, die nicht eine Anzahl von(
,)
. In dem Fall wird diese regexp funktionieren sollte (nicht getestet):Was bedeutet: ersetzen eine beliebige Folge von 1 oder mehr Zeichen, die NICHT (wegen der '^') in
0-9
,(
oder)
durch einen leeren string.Sollten Sie verwenden, Symfony Daten Transformatoren für diese Aufgabe.