NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Contacts for Laravel

Vlastné druhy

Každý uložený druh mimo šiestich vstavaných — napríklad druh whatsapp registrovaný v konfigurácii — má typ Custom a popis, ikonu aj pravidlá berie z contacts.types.<druh>:

// config/contacts.php
'types' => [
    'whatsapp' => [
        'label' => 'WhatsApp',
        'icon' => 'chat-bubble',
        'rules' => ['required', 'string', 'regex:/^\+?[1-9]\d{6,14}$/'],
    ],
],
use RoundlyConsulting\Contacts\DataTransferObjects\ContactData;
use RoundlyConsulting\Contacts\Models\Contact;

$contact = $user->addContact(ContactData::fromArray([
    'type' => 'whatsapp',
    'value' => '+421900123456',
    'name' => 'Support',
]));

$contact->kind;         // 'whatsapp'  — the raw kind, as stored
$contact->type;         // ContactType::Custom
$contact->kindLabel();  // 'WhatsApp'
$contact->kindIcon();   // 'chat-bubble'

Contact::query()->ofType('whatsapp')->get();   // this kind only

Surový druh sa uchováva popri type, takže registrovaný popis, ikona aj validačné pravidlá sa vyhodnotia správne — regex vyššie odmietne zlú hodnotu už pri addContact(). Register je indexovaný hodnotou $contact->kind; $contact->type zostáva ContactType kvôli typovaniu a pre každý druh mimo šiestich je Custom.

Druh verzus popis

kindLabel() je zobrazovaný názov druhu, odlišný od $contact->label — vášho voľného popisu jedného konkrétneho kontaktu (napríklad Work). Neregistrovaný druh sa zachová, no použije popis (Other) a ikonu (identification) druhu Custom.

Nezávislé druhy

Registrované druhy sú nezávislé: každý má vlastný primárny kontakt aj vlastné poradie a ofType('whatsapp') vyberie len tento druh — nový primárny whatsapp nikdy nezosadí primárny telegram.

Pridávanie a validácia vlastných druhov

Surový druh zachová každý vstupný bod: type('whatsapp') vo fluentnom builderi, ContactData::fromArray() s druhom v type aj argument kind konštruktora. Druh odovzdajte aj pravidlu ValidContactValue, inak sa registrované pravidlá nikdy nespustia:

use RoundlyConsulting\Contacts\DataTransferObjects\ContactData;
use RoundlyConsulting\Contacts\Enums\ContactType;
use RoundlyConsulting\Contacts\Facades\Contacts;
use RoundlyConsulting\Contacts\Rules\ValidContactValue;
use RoundlyConsulting\Contacts\Support\ContactRules;

// The fluent builder keeps the raw kind
Contacts::for($user)->type('whatsapp')->value('+421900123456')->add();

// The constructor form — pin the raw kind next to the Custom type
$user->addContact(new ContactData(ContactType::Custom, '+421900123456', kind: 'whatsapp'));

// Validate a form field against the registered kind's rules
$request->validate([
    'whatsapp' => ['required', new ValidContactValue(ContactType::Custom, 'whatsapp')],
]);

// ...or take the ready rule array for the kind
$request->validate([
    'whatsapp' => ContactRules::forValue(ContactType::Custom, 'whatsapp'),
]);

Prepis vstavaných druhov

Ten istý register prepisuje aj šesť vstavaných druhov — nastavte popis, ikonu alebo pravidlá pre email, phone, address, url, social alebo custom:

// config/contacts.php — override a built-in kind's label, icon or rules
'types' => [
    'url' => ['label' => 'Homepage', 'icon' => 'link'],
],

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

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

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.