---
title: "Konfigurácia — Comments for Laravel | Roundly"
description: "Každý konfiguračný kľúč s predvolenou hodnotou — model, typ kľúča, schvaľovanie, limity, blocklist, zmienky, autorizácia, resource autora a médiá."
url: https://roundly-consulting.com/sk/open-source/navody/comments-for-laravel/konfiguracia
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Comments for Laravel](https://roundly-consulting.com/sk/open-source/navody/comments-for-laravel.md)

# Konfigurácia

Balík funguje bez akejkoľvek konfigurácie — každý kľúč má rozumnú predvolenú hodnotu. Publikovaný config/comments.php bez docblockov:

```php
use RoundlyConsulting\Comments\Http\Resources\CommentAuthorResource;
use RoundlyConsulting\Comments\Models\Comment;

return [
    'model' => Comment::class,
    'key_type' => env('COMMENTS_KEY_TYPE', 'bigint'),
    'require_approval' => env('COMMENTS_REQUIRE_APPROVAL', false),
    'max_length' => env('COMMENTS_MAX_LENGTH', 5000),
    'max_depth' => env('COMMENTS_MAX_DEPTH', 5),
    'order' => env('COMMENTS_ORDER', 'latest'),
    'blocklist' => [],
    'blocklist_action' => env('COMMENTS_BLOCKLIST_ACTION', 'reject'),
    'mention_resolver' => null,
    'authorization' => env('COMMENTS_AUTHORIZATION', false),

    // The JSON resource CommentResource renders author through — see API resources.
    'resources' => [
        'author' => CommentAuthorResource::class,
    ],

    // Auto-hide a comment on an upheld report / threshold crossing (reports-for-laravel).
    'moderation' => [
        'on_resolved' => 'hide', // 'hide' | null — anything else throws
        'auto_hide' => true,     // react to the global reports threshold
    ],

    // Attachments + inline [media:UUID] rendering (media-library-for-laravel).
    'media' => [
        'attachments_bucket' => 'attachments',
        'visibility' => env('COMMENTS_MEDIA_VISIBILITY', 'private'),
        'disk' => env('COMMENTS_MEDIA_DISK'),
        'private_disk' => env('COMMENTS_MEDIA_PRIVATE_DISK', 'local'),
        'accepted_mime_types' => [],
        'max_file_size' => null,
        'responsive_widths' => null,
        'temporary_url_lifetime' => null,
        'inline' => [
            'enabled' => true,
            'default_variant' => '',
            'on_missing' => 'strip', // 'strip' | 'keep' (anything else throws)
        ],
    ],
];
```

## Všetky kľúče

| Kľúč | Predvolené | Účel |
| --- | --- | --- |
| `model` | Comment::class | Eloquent model, v ktorom sa ukladajú komentáre. Nastavte ho na vlastného potomka pribaleného Comment; iná trieda vyhodí výnimku. |
| `key_type` | bigint | Typ kľúča polymorfných stĺpcov: bigint, uuid alebo ulid — čokoľvek iné vyhodí výnimku. Načíta sa pri spustení migrácie; kľúče sa ukladajú a čítajú bez zmeny. |
| `require_approval` | false | Nové komentáre začínajú ako pending a pred zobrazením ich treba schváliť. |
| `max_length` | 5000 | Max počet znakov tela, najmenej 1; dlhšie vyhodí InvalidCommentBodyException. |
| `max_depth` | 5 | Max vnorenie odpovedí, najmenej 1 (komentár najvyššej úrovne má hĺbku 1; mäkko zmazaní predkovia sa započítavajú); obmedzuje aj eager loading vlákien. |
| `order` | latest | Poradie approvedComments: latest (najnovšie prvé) alebo oldest; čokoľvek iné vyhodí výnimku. |
| `blocklist` | \[\] | Zakázané slová (celé slová, bez ohľadu na veľkosť písmen) alebo regulárne výrazy s oddeľovačmi, napr. /badword/i. Prázdna položka alebo položka, ktorá nie je reťazec, vyhodí výnimku. |
| `blocklist_action` | reject | Pri zhode, pri zápise aj úprave: reject (vyhodí CommentRejectedException), pending alebo hidden; čokoľvek iné vyhodí výnimku. |
| `mention_resolver` | null | Invokovateľná trieda (class-string) alebo dvojica \[Class::class, 'method'\] vytvorená cez kontajner, ktorá priradí @handle k modelu — nikdy nie closure (config:cache ju neuloží). null = handles sa len uložia; hodnota, z ktorej nevznikne volateľný resolver — neznáma trieda, chýbajúca metóda —, vyhodí výnimku. |
| `authorization` | false | Pred každou zmenou — create, update, delete, restore, moderate, lock a unlock — sa pýta policy pre Comment. |
| `resources.author` | CommentAuthorResource::class | JSON resource, cez ktorý CommentResource vykreslí author; dostane model autora (actor). Nastavte ho na vlastný JsonResource, ak chcete pridať meno či avatar — prázdna hodnota alebo null = predvolený; čokoľvek, čo nie je inštanciovateľný potomok JsonResource, vyhodí výnimku. |
| `moderation.on_resolved` | hide | Skryje komentár po potvrdení nahlásenia; null (alebo prázdna hodnota) vypne; čokoľvek iné vyhodí výnimku. |
| `moderation.auto_hide` | true | Skryje komentár po prekročení globálneho reports.threshold. |
| `media.attachments_bucket` | attachments | Názov skupiny, ktorú komentár registruje v Media Library. |
| `media.visibility` | private | private (podpísané URL) alebo public; čokoľvek iné vyhodí výnimku — preklep nikdy nevyberie viditeľnosť za vás. |
| `media.disk` | null | Disk pre všetky prílohy; null alebo prázdna hodnota = podľa viditeľnosti (súkromné → media.private\_disk, verejné → predvolený disk Media Library). |
| `media.private_disk` | local | Disk pre súkromné prílohy a ich varianty, keď media.disk nie je nastavený — musí byť neverejný (COMMENTS\_MEDIA\_PRIVATE\_DISK). |
| `media.accepted_mime_types` | \[\] | Allowlist mime typov; \[\] prijme akýkoľvek typ. |
| `media.max_file_size` | null | Max veľkosť prílohy v bajtoch, najmenej 1, vynucovaná pri nahratí (FileUnacceptableForBucket); null = media.max\_file\_size z Media Library. |
| `media.responsive_widths` | null | Rebrík šírok pre obrázkové prílohy — zoznam kladných celých čísel (varianty s názvom responsive-<šírka>); null = media.responsive.widths z Media Library. |
| `media.temporary_url_lifetime` | null | Platnosť podpísanej URL prílohy v minútach, najmenej 1; null = predvolená hodnota Media Library. |
| `media.inline.enabled` | true | Rozbalí tokeny \[media:UUID\] v renderBody(). |
| `media.inline.default_variant` | '' (prázdne) | Variant pre token bez variantu — reťazec; prázdne = responzívny <img>. |
| `media.inline.on_missing` | strip | strip alebo keep pre tokeny, ktoré sa nenašli; čokoľvek iné vyhodí výnimku. |

## Prostredie (env)

Bežné prepínače sa riadia cez env, takže súbor väčšinou publikovať nemusíte:

```bash
COMMENTS_KEY_TYPE=bigint
COMMENTS_REQUIRE_APPROVAL=true
COMMENTS_MAX_LENGTH=2000
COMMENTS_MAX_DEPTH=3
COMMENTS_ORDER=oldest
COMMENTS_BLOCKLIST_ACTION=pending
COMMENTS_AUTHORIZATION=true
COMMENTS_MEDIA_VISIBILITY=private
COMMENTS_MEDIA_PRIVATE_DISK=s3-private
```

Každý prepínač typu bool sa načíta ako boolean, takže hodnoty v .env znamenajú presne to, čo hovoria: true, 1, on a yes ho zapnú; false, 0, off a no ho vypnú. COMMENTS\_REQUIRE\_APPROVAL=1 nové komentáre podrží na kontrolu, COMMENTS\_AUTHORIZATION=off policy preskočí. Prázdna hodnota (COMMENTS\_AUTHORIZATION=) sa považuje za nenastavenú, takže platí predvolená. Čokoľvek iné vyhodí InvalidConfigurationException, namiesto toho, aby sa potichu použila predvolená hodnota.

## Striktné nastavenia

Rovnako striktné sú aj všetky ostatné nastavenia a každá chyba vyhodí RoundlyConsulting\\PackageToolkit\\Exceptions\\InvalidConfigurationException s názvom kľúča. Nastavenie bez hodnoty — kľúč chýba, je null alebo je prázdny ako riadok COMMENTS\_MAX\_LENGTH= v hostiteľskej aplikácii —, použije svoju predvolenú hodnotu; voliteľné nastavenie (media.disk, media.max\_file\_size, media.responsive\_widths, media.temporary\_url\_lifetime) zostane nenastavené:

- Celé čísla prijímajú int alebo reťazec s celým číslom — každá hodnota z env je reťazec —, takže COMMENTS\_MAX\_LENGTH=five či 5.5 vyhodí výnimku, namiesto toho, aby sa z nej stala 0. Dĺžky, hĺbky, veľkosti, šírky a doby platnosti musia byť najmenej 1.
- Preklep v order, blocklist\_action, moderation.on\_resolved, media.visibility alebo media.inline.on\_missing vyhodí výnimku, namiesto toho, aby sa zvolila jedna z možností — preklep v media.visibility sa už nečíta ako private a preklep v on\_resolved už nevypne automatické skrývanie.
- Názov skupiny či disku, ktorý nie je reťazec, vyhodí výnimku, rovnako ako chybný zoznam (blocklist, accepted\_mime\_types, responsive\_widths).
- resources.author, ktorý nie je inštanciovateľný potomok JsonResource — stdClass, neexistujúca trieda, samotná báza JsonResource, abstraktný resource —, vyhodí výnimku pri prvom vykreslení autora.

php artisan about chybné nastavenie zobrazí ako INVALID, namiesto toho, aby zlyhal.

## Typ kľúča

key\_type určuje typ kľúča polymorfných stĺpcov actor, commentable, mentionable a lockable: bigint (predvolene), uuid alebo ulid — prázdna hodnota (COMMENTS\_KEY\_TYPE=) sa považuje za nenastavenú a ponechá bigint, iná hodnota vyhodí InvalidConfigurationException. Načíta sa pri spustení migrácie, preto ho nastavte ešte pred migrovaním.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

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

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/comments-for-laravel.md)
