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

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
modelReview::class—Model recenzie; nasmerujte ho na vlastnú podtriedu, ak ho chcete rozšíriť. Iná trieda vyhodí InvalidConfigurationException.
vote_modelReviewVote::class—Model hlasu užitočnosti; nasmerujte ho na vlastnú podtriedu. Iná trieda vyhodí InvalidConfigurationException.
key_typebigintREVIEWS_KEY_TYPETyp 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_rating1REVIEWS_MIN_RATINGNajnižšie povolené hodnotenie, 0 – 255 (stĺpec rating je unsigned tinyint).
max_rating5REVIEWS_MAX_RATINGNajvyššie povolené hodnotenie, od min_rating (aspoň 1) po 255.
default_statuspending—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_approvefalseREVIEWS_AUTO_APPROVENové — aj znova moderované upravené — recenzie hneď schváliť a moderátora preskočiť.
reset_status_on_edittrueREVIEWS_RESET_STATUS_ON_EDITPri ú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_authorfalseREVIEWS_ONE_PER_AUTHORZablokovať 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_aliastrueREVIEWS_REGISTER_FACADE_ALIASZaregistrovať 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.
moderatorNullModerator::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_WORDSZakázané slová oddelené čiarkou, pre ktoré WordListModerator recenziu zamietne. Ak ich nastavíte v PHP, musí to byť zoznam neprázdnych reťazcov.
cache_aggregatesfalseREVIEWS_CACHE_AGGREGATESUdržiavať cachované reviews_count / reviews_avg na zapojených modeloch.
photos.enabledtrueREVIEWS_PHOTOS_ENABLEDHlavný vypínač fotografií; pri false sa skupina nedeklaruje a withPhoto() vyhodí výnimku.
photos.bucketphotosREVIEWS_PHOTOS_BUCKETSkupina médií, do ktorej sa fotografie ukladajú (reťazec; prázdna hodnota = nenastavená → photos).
photos.disknullREVIEWS_PHOTOS_DISKDisk 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_disklocalREVIEWS_PHOTOS_PRIVATE_DISKNeverejný disk pre súkromné fotografie a ich varianty, keď photos.disk nie je nastavený (reťazec; prázdna hodnota = nenastavená → local).
photos.max5REVIEWS_PHOTOS_MAXLimit fotografií na recenziu, aspoň 0 (0 = bez limitu, len ak ho nastavíte výslovne); prekročenie vyhodí tooManyPhotos().
photos.max_file_size5242880REVIEWS_PHOTOS_MAX_FILE_SIZENajväčší povolený súbor v bajtoch (5 MB), aspoň 0 (0 = bez limitu na fotografiu, len ak ho nastavíte výslovne).
photos.accepted_mime_typesjpeg, 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.visibilitypublicREVIEWS_PHOTOS_VISIBILITYpublic alebo private (presne, malými písmenami); čokoľvek iné vyhodí výnimku, namiesto aby fotografie zverejnilo.
photos.warm_on_approvaltrueREVIEWS_PHOTOS_WARM_ON_APPROVALPo 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=private

REVIEWS_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=reviews

Vypisuje 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 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.