---
title: "DI a akcie — Comments for Laravel | Roundly"
description: "Vložte si CommentsManager a získate to isté API bez statických volaní, alebo spustite niektorú z jedenástich akcií priamo z jobu či vlastnej akcie."
url: https://roundly-consulting.com/sk/open-source/navody/comments-for-laravel/bez-fasady
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)

# DI a akcie

Fasáda je odporúčaná predvoľba, nie jediná cesta. Ten istý kód spúšťajú tri vstupné body:

- Fasáda Comments — najkratší zápis.
- Manažér vložený cez konštruktor — rovnaké API s explicitnou závislosťou a bez statických volaní. RoundlyConsulting\\Comments\\CommentsManager je koreň fasády: singleton, zámerne nie final, pretože ho fake rozširuje.
- Akcie — RoundlyConsulting\\Comments\\Actions\\\*Action, final readonly triedy s jedinou metódou execute(), pre joby vo fronte alebo vaše vlastné akcie.

## Vloženie manažéra

Comments::fake() nahradí manažér aj v kontajneri, takže fake dostanú aj manažéry vložené cez konštruktor:

```php
use RoundlyConsulting\Comments\CommentsManager;
use RoundlyConsulting\Comments\Models\Comment;

final class PublishFeedback
{
    public function __construct(private CommentsManager $comments) {}

    public function __invoke(Post $post, User $user, string $body): Comment
    {
        return $this->comments->on($post)->as($user)->body($body)->post();
    }
}

// Everything on the facade is on the manager:
$this->comments->query()->pending()->mostReported()->paginate();
$this->comments->lockThread($comment);
```

## Spustenie akcie

Každá metóda manažéra si z kontajnera vyžiada jednu akciu, takže vaša náhrada akcie platí pre fasádu, builder, hromadné moderovanie aj traity modelov. Priame volanie akcie manažér obíde, preto ho Comments::fake() nezaznamená:

```php
use RoundlyConsulting\Comments\Actions\LockThreadAction;
use RoundlyConsulting\Comments\Actions\WriteCommentAction;
use RoundlyConsulting\Comments\DataTransferObjects\WriteCommentData;

$comment = app(WriteCommentAction::class)->execute(new WriteCommentData(
    commentable: $post,
    body: 'From a job',
    author: $user,        // optional
    parent: $rootComment, // optional reply — must belong to $post
));

app(LockThreadAction::class)->execute($comment);
```

## Metóda fasády → akcia

| Metóda fasády | Akcia | Čo robí |
| --- | --- | --- |
| `on()->post(), write()` | `WriteCommentAction::execute(WriteCommentData)` | Odmietne cudzieho rodiča, autorizuje, overí telo, skontroluje hĺbku, zámky a blocklist, uloží, synchronizuje zmienky. |
| `update()` | `UpdateCommentAction::execute(UpdateCommentData)` | Upraví telo, znova uplatní blocklist, zosynchronizuje zmienky; spustí CommentUpdated. |
| `delete(), deleteAll()` | `DeleteCommentAction::execute(Comment)` | Mäkko zmaže; spustí CommentDeleted. |
| `restore()` | `RestoreCommentAction::execute(Comment)` | Obnoví mäkko zmazaný komentár. |
| `approve(), approveAll()` | `ApproveCommentAction::execute(Comment)` | Stav approved; spustí CommentApproved a potom CommentMentioned pre doteraz zadržané zmienky. |
| `hide(), hideAll()` | `HideCommentAction::execute(Comment)` | Stav hidden; spustí CommentHidden. |
| `lock()` | `LockSubjectAction::execute(Model)` | Uloží CommentLock subjektu. |
| `unlock()` | `UnlockSubjectAction::execute(Model)` | Odstráni zámok subjektu. |
| `lockThread()` | `LockThreadAction::execute(Comment)` | Zamkne vlákno; spustí CommentThreadLocked. |
| `unlockThread()` | `UnlockThreadAction::execute(Comment)` | Zruší zámok vlákna; spustí CommentThreadUnlocked. |
| `transfer()` | `TransferCommentsAction::execute(Model $from, Model $to)` | Odmietne ten istý subjekt aj zamknutý cieľ, overí create na cieli, v jednej transakcii presmeruje všetky komentáre; spustí CommentsTransferred. |

query(), for(), byAuthor(), isLocked(), isThreadLocked() a blocklisted() sú čítania bez akcie. SyncCommentMentionsAction a NotifyCommentMentionsAction sú @internal — stavebné kamene, ktoré spúšťajú akcie zápisu, úpravy a schválenia, nie operácie pre hostiteľskú aplikáciu. Akcie prijímajú dve DTO z RoundlyConsulting\\Comments\\DataTransferObjects: WriteCommentData(commentable, body, author, visible, parent, meta) a UpdateCommentData(comment, body).

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