---
title: "Písanie komentárov — Comments for Laravel | Roundly"
description: "Píšte komentáre cez fluentnú fasádu Comments, typované DTO alebo trait autora — s kontrolou tela, zámkov a blocklistu pri každom zápise."
url: https://roundly-consulting.com/sk/open-source/navody/comments-for-laravel/pisanie-komentarov
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)

# Písanie komentárov

## Fluentný builder

Comments::on() spustí fluentný builder, ktorý sa číta ako veta; post() komentár uloží a vráti:

```php
use RoundlyConsulting\Comments\Facades\Comments;

$comment = Comments::on($post)
    ->as($user)
    ->body('Nice write-up!')
    ->post();

// A reply, fluently (the parent must belong to the same subject):
Comments::on($post)->as($user)->reply($comment)->body('Thanks!')->post();

// Hidden comment:
Comments::on($post)->as($user)->visible(false)->body('Internal note')->post();

// Anonymous / guest comment — omit ->as():
Comments::on($post)->body('Great read.')->post();

// With your own metadata — see Metadata:
Comments::on($post)->as($user)->body('Via the help desk')->meta(['source' => 'email'])->post();
```

- as($author) — autor; ak ho vynecháte, uloží sa anonymný komentár hosťa.
- body($body) — telo komentára, pred uložením zbavené okrajových medzier.
- visible($visible = true) — príznak viditeľnosti, nezávislý od stavu moderovania.
- reply($parent) — komentár bude odpoveďou; rodič musí patriť tomu istému subjektu.
- meta($meta) — pripojí vlastné metaúdaje; opakované volania zlúčia kľúče najvyššej úrovne — pozrite Metaúdaje komentárov.
- post() — zvaliduje, uloží a vráti Comment.

## Typované DTO

V jobs vo fronte alebo v servisnom kóde odovzdajte DTO WriteCommentData do Comments::write() — všetky argumenty za body sú voliteľné:

```php
use RoundlyConsulting\Comments\DataTransferObjects\WriteCommentData;
use RoundlyConsulting\Comments\Facades\Comments;

$comment = Comments::write(new WriteCommentData(
    commentable: $post,
    body: 'From a job',
    author: $user,               // optional
    parent: $rootComment,        // optional reply — must belong to $post
    meta: ['source' => 'import'], // optional — empty stores nothing
));
```

## Z modelu autora

GivesComments pridáva skratku writeComment(). Odovzdajte komentovaný model, telo komentára a voliteľný príznak viditeľnosti (predvolene true). Ide cez ten istý manažér ako fasáda:

```php
$comment = $user->writeComment(
    commentable: $post,
    comment: 'This is a very good blog post, thanks for sharing!',
    visible: true, // optional, defaults to true
);   // goes through the same manager as Comments::on($post)->as($user)->…->post()
```

## Čo kontroluje každý zápis

Builder, write() aj trait spúšťajú tú istú akciu WriteCommentAction v tomto poradí:

- Rodič — odpoveď, ktorej rodič patrí inému subjektu, vyhodí InvalidCommentParentException ešte pred autorizáciou.
- Autorizácia — ability create, len pri zapnutom comments.authorization.
- Telo — oreže sa; prázdne telo alebo telo dlhšie ako max\_length vyhodí InvalidCommentBodyException.
- Hĺbka odpovede — odpoveď hlbšie ako max\_depth vyhodí MaxReplyDepthExceededException; mäkko zmazaní predkovia sa započítavajú.
- Zámky — zamknutý subjekt alebo odpoveď kdekoľvek v zamknutom vlákne vyhodí CommentsLockedException.
- Stav — approved, alebo pending pri zapnutom require\_approval; zhoda s blocklistom komentár odmietne, podrží na kontrolu alebo skryje.
- Zmienky — @handles z tela sa uložia a priradia; CommentMentioned sa odošle až po schválení komentára.

Po uložení komentára sa odošle CommentCreated. Každá chyba je potomkom CommentsException, takže jediný catch ich všetky premení na chybu formulára:

```php
use Illuminate\Http\Request;
use RoundlyConsulting\Comments\Exceptions\CommentsException;
use RoundlyConsulting\Comments\Facades\Comments;

public function store(Request $request, Post $post)
{
    try {
        Comments::on($post)
            ->as($request->user())
            ->body((string) $request->input('body'))
            ->post();
    } catch (CommentsException $e) {
        return back()->withErrors(['body' => $e->getMessage()])->withInput();
    }

    return back();
}
```

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