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

Každé hlásenie nesie slug dôvodu overený voči config('reports.reasons'). Nepovolený slug vyhodí UnknownReportReasonException, pokiaľ allow_unknown_reasons nie je true. Predvolené dôvody zodpovedajú enumu Reason:

PrípadSlugPopisok
Reason::SpamspamSpam
Reason::AbuseabuseAbuse
Reason::HarassmentharassmentHarassment
Reason::InappropriateinappropriateInappropriate
Reason::MisinformationmisinformationMisinformation
Reason::OtherotherOther

Popisky a možnosti

Reason používa trait Helpers z enums-for-laravel, takže popisky, hodnoty aj možnosti pre výber sú pripravené:

use RoundlyConsulting\Reports\Enums\Reason;

Reason::Abuse->label();             // "Abuse"
Reason::Inappropriate->readable();  // "Inappropriate"
Reason::values();                   // Collection: 'spam', 'abuse', 'harassment', …
Reason::validationRule();           // "in:spam,abuse,harassment,inappropriate,misinformation,other"
Reason::toOptions();                // Collection: ['spam' => 'Spam', 'abuse' => 'Abuse', …]

Popisky vznikajú zo slugu cez Str::headline() a prechádzajú prekladačom Laravelu, takže ich môžete preložiť či preformulovať v JSON jazykovom súbore.

Vlastné dôvody

Vlastné slugy pridajte do zoznamu reasons — validujú sa presne ako vstavané:

// config/reports.php
'default_reason' => 'other',
'reasons' => ['spam', 'abuse', 'harassment', 'inappropriate', 'misinformation', 'other', 'copyright'],
'allow_unknown_reasons' => false,

Vlastné slugy nemajú prípad v enume, preto ich odovzdávajte ako reťazce: ->for('copyright'). Ak nastavíte allow_unknown_reasons na true, prijme sa akýkoľvek slug bez validácie.

Validácia vstupu

Reason::validationRule() pokrýva len prípady enumu. Keď pridáte vlastné slugy, validujte voči kľúčom Reports::reasons(), ktoré vracia nakonfigurované slugy s ich popiskami:

use Illuminate\Validation\Rule;
use RoundlyConsulting\Reports\Enums\Reason;
use RoundlyConsulting\Reports\Facades\Reports;

// Enum cases only:
$request->validate(['reason' => ['required', Reason::validationRule()]]);

// Everything in config('reports.reasons'), custom slugs included:
$request->validate(['reason' => ['required', Rule::in(array_keys(Reports::reasons()))]]);

Čítanie povolených dôvodov

Povolenú množinu vám vráti fasáda — pripravenú pre výberový zoznam:

use RoundlyConsulting\Reports\Facades\Reports;

Reports::reasons();                 // ['spam' => 'Spam', 'abuse' => 'Abuse', …] — slug => label
Reports::reasonLabel('spam');       // "Spam" (a custom slug labels as itself)
Reports::defaultReason();           // "other"
Reports::allowsReason('copyright'); // false unless configured or allow_unknown_reasons

// A <select> straight from config, custom slugs included:
foreach (Reports::reasons() as $slug => $label) {
    // <option value="{{ $slug }}">{{ $label }}</option>
}

Za týmito metódami stojí singleton ReasonRegistry v kontajneri, ktorý môžete použiť aj priamo:

use RoundlyConsulting\Reports\Support\ReasonRegistry;

$registry = app(ReasonRegistry::class);
$registry->all();                   // list<string> — the slugs; the Reason cases when reasons is unset
$registry->isAllowed('copyright');  // bool — always true when allow_unknown_reasons is on
$registry->allowsUnknown();         // bool

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.