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 onlySurový 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 kryptomienOdoslaní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.