Konfigurácia
Balík funguje bez akejkoľvek konfigurácie. Publikovaný config/reviews.php v plnom znení:
<?php
use RoundlyConsulting\Reviews\Enums\ReviewStatus;
use RoundlyConsulting\Reviews\Models\Review;
use RoundlyConsulting\Reviews\Models\ReviewVote;
use RoundlyConsulting\Reviews\Moderation\NullModerator;
return [
'model' => Review::class,
'vote_model' => ReviewVote::class,
'key_type' => env('REVIEWS_KEY_TYPE', 'bigint'),
'min_rating' => env('REVIEWS_MIN_RATING', 1),
'max_rating' => env('REVIEWS_MAX_RATING', 5),
'default_status' => ReviewStatus::Pending->value,
'auto_approve' => env('REVIEWS_AUTO_APPROVE', false),
'reset_status_on_edit' => env('REVIEWS_RESET_STATUS_ON_EDIT', true),
'one_per_author' => env('REVIEWS_ONE_PER_AUTHOR', false),
'register_facade_alias' => env('REVIEWS_REGISTER_FACADE_ALIAS', true),
'moderator' => NullModerator::class,
'moderation' => [
'banned_words' => array_values(array_filter(array_map(
'trim',
explode(',', (string) env('REVIEWS_BANNED_WORDS', '')),
))),
],
'cache_aggregates' => env('REVIEWS_CACHE_AGGREGATES', false),
'photos' => [
'enabled' => env('REVIEWS_PHOTOS_ENABLED', true),
'bucket' => env('REVIEWS_PHOTOS_BUCKET', 'photos'),
'disk' => env('REVIEWS_PHOTOS_DISK'),
'private_disk' => env('REVIEWS_PHOTOS_PRIVATE_DISK', 'local'),
'max' => env('REVIEWS_PHOTOS_MAX', 5),
'max_file_size' => env('REVIEWS_PHOTOS_MAX_FILE_SIZE', 5 * 1024 * 1024),
'accepted_mime_types' => ['image/jpeg', 'image/png', 'image/webp', 'image/gif'],
'responsive_widths' => [320, 640, 1024],
'visibility' => env('REVIEWS_PHOTOS_VISIBILITY', 'public'),
'warm_on_approval' => env('REVIEWS_PHOTOS_WARM_ON_APPROVAL', true),
],
];Všetky kľúče
| Kľúč | Predvolené | Env | Účel |
|---|---|---|---|
model | Review::class | — | Model recenzie; nasmerujte ho na vlastnú podtriedu, ak ho chcete rozšíriť. Iná trieda vyhodí InvalidConfigurationException. |
vote_model | ReviewVote::class | — | Model hlasu užitočnosti; nasmerujte ho na vlastnú podtriedu. Iná trieda vyhodí InvalidConfigurationException. |
key_type | bigint | REVIEWS_KEY_TYPE | Typ kľúča polymorfných stĺpcov predmetu, autora a hlasujúceho — bigint, uuid alebo ulid (iná hodnota vyhodí InvalidConfigurationException). Číta sa pri spustení migrácií. |
min_rating | 1 | REVIEWS_MIN_RATING | Najnižšie povolené hodnotenie, 0 – 255 (stĺpec rating je unsigned tinyint). |
max_rating | 5 | REVIEWS_MAX_RATING | Najvyššie povolené hodnotenie, od min_rating (aspoň 1) po 255. |
default_status | pending | — | Stav, v ktorom recenzia skončí, keď ju moderátor nechá nerozhodnutú (a auto-approve je vypnuté). Hodnota, ktorá nie je ReviewStatus, vyhodí výnimku. |
auto_approve | false | REVIEWS_AUTO_APPROVE | Nové — aj znova moderované upravené — recenzie hneď schváliť a moderátora preskočiť. |
reset_status_on_edit | true | REVIEWS_RESET_STATUS_ON_EDIT | Pri úprave hodnotenia, nadpisu alebo textu vrátiť nerozhodnutú recenziu do default_status (false: ponechať jej stav). Moderátor beží v oboch prípadoch. |
one_per_author | false | REVIEWS_ONE_PER_AUTHOR | Zablokovať druhú nezmazanú recenziu od toho istého autora na ten istý predmet; odpovede vlastníka sa nepočítajú. Overuje sa pod zámkom riadka autora. |
register_facade_alias | true | REVIEWS_REGISTER_FACADE_ALIAS | Zaregistrovať globálny alias Reviews; iný reťazec sa použije ako názov aliasu. false/0/off/no (alebo výslovné null) ho vynechá; prázdna hodnota sa počíta ako nenastavená, takže sa alias zaregistruje. |
moderator | NullModerator::class | — | ReviewModerator volaný pri vytvorení a pri úprave hodnotenia, nadpisu či textu; nahraďte ho WordListModerator alebo vlastným. Trieda, ktorá neimplementuje ReviewModerator, vyhodí výnimku. |
moderation.banned_words | [] | REVIEWS_BANNED_WORDS | Zakázané slová oddelené čiarkou, pre ktoré WordListModerator recenziu zamietne. Ak ich nastavíte v PHP, musí to byť zoznam neprázdnych reťazcov. |
cache_aggregates | false | REVIEWS_CACHE_AGGREGATES | Udržiavať cachované reviews_count / reviews_avg na zapojených modeloch. |
photos.enabled | true | REVIEWS_PHOTOS_ENABLED | Hlavný vypínač fotografií; pri false sa skupina nedeklaruje a withPhoto() vyhodí výnimku. |
photos.bucket | photos | REVIEWS_PHOTOS_BUCKET | Skupina médií, do ktorej sa fotografie ukladajú (reťazec; prázdna hodnota = nenastavená → photos). |
photos.disk | null | REVIEWS_PHOTOS_DISK | Disk pre všetky fotografie. Nenastavená hodnota (null alebo prázdna) = podľa viditeľnosti: súkromné → photos.private_disk, verejné → predvolený disk media-library. |
photos.private_disk | local | REVIEWS_PHOTOS_PRIVATE_DISK | Neverejný disk pre súkromné fotografie a ich varianty, keď photos.disk nie je nastavený (reťazec; prázdna hodnota = nenastavená → local). |
photos.max | 5 | REVIEWS_PHOTOS_MAX | Limit fotografií na recenziu, aspoň 0 (0 = bez limitu, len ak ho nastavíte výslovne); prekročenie vyhodí tooManyPhotos(). |
photos.max_file_size | 5242880 | REVIEWS_PHOTOS_MAX_FILE_SIZE | Najväčší povolený súbor v bajtoch (5 MB), aspoň 0 (0 = bez limitu na fotografiu, len ak ho nastavíte výslovne). |
photos.accepted_mime_types | jpeg, png, webp, gif | — | Povolené mime typy obrázkov ([] prijme akýkoľvek typ). |
photos.responsive_widths | [320, 640, 1024] | — | Rebrík responzívnych šírok z kladných celých čísel (null použije predvolený rebrík media-library). |
photos.visibility | public | REVIEWS_PHOTOS_VISIBILITY | public alebo private (presne, malými písmenami); čokoľvek iné vyhodí výnimku, namiesto aby fotografie zverejnilo. |
photos.warm_on_approval | true | REVIEWS_PHOTOS_WARM_ON_APPROVAL | Po schválení recenzie zaradiť generovanie variantov do fronty. |
Každý prepínač typu bool sa číta prísne: true/1/on/yes ho zapne, false/0/off/no vypne, prázdna hodnota (REVIEWS_PHOTOS_ENABLED=) sa počíta ako nenastavená, takže platí predvolená hodnota, a čokoľvek iné (napríklad REVIEWS_PHOTOS_ENABLED=disabled) vyhodí InvalidConfigurationException, namiesto aby sa potichu použila predvolená hodnota.
Rovnako prísne sa číta každé ďalšie nastavenie. Nenastavené nastavenie — chýbajúce, null alebo prázdne ako REVIEWS_PHOTOS_DISK= u hostiteľa — dostane predvolenú hodnotu (photos.disk zostane nenastavený). Celé čísla prijímajú int alebo obyčajný celočíselný reťazec („10“ — každá env hodnota je reťazec); five, 5.5 či 1e3 vyhodia výnimku, namiesto aby sa z nich stala 0 — čo by pri photos.max znamenalo neobmedzený počet fotografií. Preklep v photos.visibility, napríklad privat, vyhodí výnimku, namiesto aby fotografie zverejnil, a výnimku vyhodí aj nereťazcový názov skupiny alebo disku, nastavenie mime typov či šírok, ktoré nie je zoznam, alebo neplatná položka v ňom.
Prostredie (env)
Väčšina prepínačov sa riadi cez env, takže súbor publikovať väčšinou nemusíte:
REVIEWS_MIN_RATING=1
REVIEWS_MAX_RATING=10
REVIEWS_AUTO_APPROVE=false
REVIEWS_ONE_PER_AUTHOR=true
REVIEWS_BANNED_WORDS=spam,scam
REVIEWS_CACHE_AGGREGATES=true
REVIEWS_PHOTOS_MAX=3
REVIEWS_PHOTOS_VISIBILITY=privateREVIEWS_BANNED_WORDS sa rozdelí podľa čiarok a oreže, medzery okolo slov teda neprekážajú.
Kontrola aktuálnej konfigurácie
Balík pridáva do príkazu about v Laraveli sekciu Reviews — modely, stupnicu, prepínače moderovania, agregáty a nastavenia fotografií:
php artisan about --only=reviewsVypisuje len prepínače, hranice a prítomnosť hodnôt: zoznam zakázaných slov sa zobrazí ako počet a disk fotografií ako SET alebo DEFAULT, takže výstup môžete bezpečne vložiť do tiketu. Chybná stupnica hodnotení, predvolený stav, zoznam zakázaných slov či nastavenie fotografií sa zobrazí ako INVALID a príkaz nezlyhá.
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.