---
title: "Druhy kontaktov a normalizácia — Contacts for Laravel | Roundly"
description: "Šesť vstavaných druhov ContactType, ako sa každá hodnota normalizuje a validuje, ich popisy a ikony a pomocníci enumu pre výbery."
url: https://roundly-consulting.com/sk/open-source/navody/contacts-for-laravel/druhy-kontaktov
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Contacts for Laravel](https://roundly-consulting.com/sk/open-source/navody/contacts-for-laravel.md)

# Druhy kontaktov a normalizácia

RoundlyConsulting\\Contacts\\Enums\\ContactType je reťazcový backed enum so šiestimi druhmi: Email, Phone, Address, Url, Social a Custom. Každý druh určuje normalizáciu, validáciu, preložiteľný popis a názov ikony:

| Druh | Normalizácia | Predvolené pravidlá | Popis | Ikona |
| --- | --- | --- | --- | --- |
| `email` | Zmenšené písmená, orezané medzery. | `required, string, email` | Email | `envelope` |
| `phone` | Oddeľovače odstránené, úvodné + zachované, 00 sa číta ako +, (0) za predvoľbou sa vynechá; default\_country\_code nahradí úvodnú 0 vnútroštátneho čísla. | `required, string, regex:/^\+?[1-9]\d{6,14}$/` | Phone | `phone` |
| `address` | Orezané medzery. | `required, string` | Address | `map-pin` |
| `url` | Doplní sa https://, ak chýba schéma. | `required, string, url` | Website | `globe-alt` |
| `social` | Orezané medzery. | `required, string` | Social | `at-symbol` |
| `custom` | Orezané medzery. | `required, string` | Other | `identification` |

## Normalizácia

Normalizácia je čisté PHP bez externých knižníc. Prebehne pred validáciou pri každom pridaní, úprave a synchronizácii, takže to isté číslo sa nikdy neuloží piatimi rôznymi spôsobmi:

```php
use RoundlyConsulting\Contacts\Enums\ContactType;

ContactType::Email->normalize(' A.Person@Example.COM ');  // 'a.person@example.com'
ContactType::Phone->normalize('+421 (900) 000-000');      // '+421900000000'
ContactType::Phone->normalize('+44 (0)20 7946 0000');     // '+442079460000' — the (0) is dropped
ContactType::Phone->normalize('00421 900 123 456');       // '+421900123456' — 00 reads as +
ContactType::Phone->normalize('0900 123 456');            // '0900123456' — bare digits, which the phone rule rejects
// ...or '+421900123456' with CONTACTS_DEFAULT_COUNTRY_CODE=421 (trunk 0 replaced)
ContactType::Url->normalize('example.com');               // 'https://example.com'
ContactType::Url->normalize('ftp://files.example.com');   // unchanged — has a scheme
ContactType::Social->normalize('  @janedoe ');            // '@janedoe'
```

Normalizácia telefónu je orientačné E.164. Úvodné 00 sa číta ako + a (0) za predvoľbou krajiny sa vynechá. Ak je nastavený default\_country\_code (napríklad 421), vnútroštátne číslo ho dostane namiesto úvodnej 0 — z 0900 123 456 bude +421900123456; Taliansko a San Maríno si 0 ponechajú, lebo je súčasťou ich čísel. Bez neho si vnútroštátne číslo ponechá holé číslice: číslo s úvodnou 0 (0900 123 456) sa potom odmietne ako neplatný telefón, pretože pravidlo pre telefón úvodnú 0 nepovoľuje, a číslo bez nej (900 123 456) sa uloží ako jeho číslice. Ak chcete čísla ukladať v medzinárodnom tvare, nastavte predvoľbu alebo nechajte používateľov zadávať čísla v tvare +421 …

Pravidlá sa vždy vyhodnocujú na normalizovanej hodnote — na tom, čo sa uloží — a každá hodnota má strop 255 znakov, dĺžku stĺpca value. Hodnota, ktorá nevyhovie jednému či druhému, vyhodí InvalidContactValue ešte pred akýmkoľvek zápisom.

## Popisy, ikony a pravidlá

```php
ContactType::Phone->label();              // 'Phone' — config, then translation, then value
ContactType::Phone->icon();               // 'phone'
ContactType::Phone->validationRules();    // ['required', 'string', 'regex:/^\+?[1-9]\d{6,14}$/']
ContactType::Phone->rules();              // ['required', 'string', new ValidContactValue(ContactType::Phone)]
ContactType::fromValueOrCustom('email');  // ContactType::Email
ContactType::fromValueOrCustom('fax');    // ContactType::Custom
```

label() sa vyhodnocuje v poradí: popis nastavený v contacts.types, potom preklad contacts::types a nakoniec hodnota s veľkým začiatočným písmenom. Vstavané popisy sú k dispozícii v angličtine a slovenčine; ak ich chcete preformulovať alebo pridať ďalší jazyk, publikujte contacts-translations.

## Pomocníci enumu

ContactType používa aj trait Helpers z enums-for-laravel pre výberové zoznamy a validáciu. Jeho vlastný label(), ktorý zohľadňuje konfiguráciu aj preklady, má prednosť pred jednoduchou verziou z traitu:

```php
ContactType::values();          // Collection: 'email', 'phone', 'address', 'url', 'social', 'custom'
ContactType::options();         // EnumOption DTOs {value, label, name} for selects
ContactType::validationRule();  // 'in:email,phone,address,url,social,custom'
$type->isIn([ContactType::Email, ContactType::Phone]);
```

validationRule() obsahuje len šesť vstavaných hodnôt. Ak chcete akceptovať aj registrované vlastné druhy, použite ContactRules::kinds() — pozrite Validácia.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/contacts-for-laravel.md)
