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!