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ípad | Slug | Popisok |
|---|---|---|
Reason::Spam | spam | Spam |
Reason::Abuse | abuse | Abuse |
Reason::Harassment | harassment | Harassment |
Reason::Inappropriate | inappropriate | Inappropriate |
Reason::Misinformation | misinformation | Misinformation |
Reason::Other | other | Other |
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(); // boolPrejavte 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.