Laravel érvényesítési szabály – telefon
Ebben az új sorozatban megvizsgáljuk a Laravel egyéni érvényesítési szabályainak fogalmát, és azt, hogy miért érdemes ezeket használni. Célom, hogy minden nap kiadjak egy új cikket, amely egy új szabályt tartalmaz, amelyet felhasználhat saját projektjeiben. Ezeket a szabályokat egy "csomagba" is gyűjtöm, amelyet a zeneszerzőn keresztül begyűjthetsz.
Újrafutóz
Ha nem ismeri az adatellenőrzés kezelésére szolgáló egyéni szabályok létrehozásának okait, tekintse meg a sorozat első cikkének „bevezető” részét.
Érdemes átnézned a szabály létrehozásáról szóló részt is (ugyanabban a bejegyzésben), mivel nem ismételjük meg az egyes módszerek mechanikáját az érvényesítési osztályaidban, csak megvizsgáljuk a szabály működéséhez szükséges kódot. .
promóció
Nemrég kiadtam a Pulse-t – egy barátságos, megfizethető szerver- és webhelyfigyelő szolgáltatást, amelyet kifejezetten fejlesztők számára fejlesztettek ki. Tartalmazza az összes szokásos hardveres monitort, egyedi szolgáltatásfigyelőket, riasztást különböző értesítési csatornákon, naplókat, valamint teljes API-támogatást. Vessen egy pillantást… https://pulse.alphametric.co
Az ellenőrzés és a válasz
Kezdjük azzal, hogy megírjuk azt a logikát, amely ahhoz szükséges, hogy a felhasználó érvényes telefonszámot adott-e meg. A jelenlegi konvenciók szerint egy telefonszám akkor érvényes, ha 7 és 15 karakter közötti hosszúságú, és csak egész számokat tartalmaz.
Az általunk létrehozott erős jelszószabályhoz hasonlóan e követelmények végrehajtásának legegyszerűbb módja egy reguláris kifejezés használata:
public function passes($attribute, $value) { return preg_match("/^[0-9]{7,15}$/", $value); }
Ezután egy hibaüzenetet kell írnunk, amely visszatér, ha a felhasználó nem adott meg érvényes telefonszámot:
public function message() { return 'The :attribute must be a valid telephone number (7 - 15 digits in length)'; }
A tesztelés működik
Mint korábban, most is írunk egy gyors egységtesztet, hogy megbizonyosodjunk arról, hogy a reguláris kifejezés megfelelően működik, és elutasítja az érvénytelen telefonszámokat:
/** @test */ public function a_telephone_number_can_be_validated() { $rule = ['phone' => [new App\Rules\TelephoneNumber]]; $this->assertFalse(validator(['phone' => '1'], $rule)->passes()); $this->assertFalse(validator(['phone' => '1#'], $rule)->passes()); $this->assertFalse(validator(['phone' => 'a1#'], $rule)->passes()); $this->assertFalse(validator(['phone' => 'aB1#'], $rule)->passes()); $this->assertFalse(validator(['phone' => '123456'], $rule)->passes()); $this->assertFalse(validator(['phone' => '1234567890123456'], $rule)->passes()); $this->assertTrue(validator(['phone' => '123456789'], $rule)->passes()); }
Becsomagolás
Mostantól van egy újrafelhasználható érvényesítési szabályunk annak biztosítására, hogy a felhasználók érvényes telefonszámot adjanak meg, amikor szükségünk van rá. Az ellenőrzés sikertelensége esetén megfelelő hibaüzenettel is válaszolunk, és tesztet végzünk a szabály működésének biztosítására.
A teljes osztályt megtekintheti, és beillesztheti a projektjeibe, ha ellátogat a Github repójába: https://github.com/alphametric/laravel-validation-rules
További érvényesítési szabályokat kívánok megosztani veled az elkövetkező napokban, ezért mindenképp kövessen engem ezeknél a cikkeknél. Ha érdekel, követhetsz a "Twitteren" is, hogy mindent megtudj, amivel foglalkozom.
Boldog kódolást!