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

Písanie komentárov

Fluentný builder

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

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();
  • 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.
  • post() — zvaliduje, uloží a vráti Comment.

Typované DTO

V jobs vo fronte alebo v servisnom kóde odovzdajte DTO WriteCommentData do Comments::write():

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

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:

$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:

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

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.