Bài viết

Kho tài liệu và bài viết được chia sẻ, đánh giá bởi cộng đồng

Code mẫu laravel Livewire trong laravelio/laravel.io

HXD.VN đã tạo 14:46 07-09-2021 Hoạt động 14:46 07-09-2021 2.816 lượt xem 0 bình luận

Nội dung bài viết

File app/Http/Livewire/LikeReply.php 

 

use App\Jobs\LikeReply as LikeReplyJob;
use App\Jobs\UnlikeReply as UnlikeReplyJob;
use App\Models\Reply;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Support\Facades\Auth;
use Livewire\Component;

final class LikeReply extends Component
{
    use DispatchesJobs;

    public $reply;

    public function mount(Reply $reply): void
    {
        $this->reply = $reply;
    }

    public function toggleLike(): void
    {
        if (Auth::guest()) {
            return;
        }

        if ($this->reply->isLikedBy(Auth::user())) {
            $this->dispatchNow(new UnlikeReplyJob($this->reply, Auth::user()));
        } else {
            $this->dispatchNow(new LikeReplyJob($this->reply, Auth::user()));
        }
    }
}

 

File resources/views/livewire/like-reply.blade.php

<div class="thread-info-likes">
    @if (Auth::guest())
        <div class="text-gray-600 px-4 py-2 border-r inline-block">
            <span class="text-2xl mr-1">👍</span>
            {{ count($this->reply->likes()) }}
        </div>
    @else
        <button type="button" wire:click="toggleLike" class="text-lio-600 px-4 py-2 border-r">
            <span class="text-2xl mr-1">👍</span>
            {{ count($this->reply->likes()) }}
        </button>
    @endif
</div>

 

File resources/views/forum/threads/show.blade.php

 

<div class="border-t">
     <livewire:like-reply :reply="$reply"/>
</div>

 

Xem full project tại (Github)

Nội dung bài viết

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập

Câu hỏi mới nhất