Cara Membuat Laravel Tagging System
Tags: laravel, tag
Published: 2021-02-13 18:56:28

Setelah sebelumnya membuat [Subscription System](https://dev.to/adityacprtm/cara-membuat-newsletter-subscribers-dengan-laravel-22ho), ini cara kami bagaimana membuat atau mengelola sistem tag yang mudah dan gratis dengan Laravel pada situs ini sebelum beralih ke wordpress. Sistem Tagging ini diperlukan ketika membuat sebuah situs yang berisi artikel atau blog. Jika menulis postingan untuk teknologi, maka dapat membuat tag seperti nama teknologi, jenis teknologi, fitur teknologi, dll.

Dalam posting ini, akan menunjukkan cara membuat Laravel Tagging System menggunakan package dari [rtconner/laravel-tagging](https://github.com/rtconner/laravel-tagging). Di sini kami asumsikan telah memiliki proyek laravel dan kemudian menginstal paket laravel-tagging.

# Install Package Laravel Tagging System

Pada langkah ini, kita perlu menginstal package `rtconner/laravel-tagging` menggunakan `composer` dengan menjalankan perintah ini:

```
composer require rtconner/laravel-tagging
``` 

# Publish dan jalankan migrasi

Package tersebut akan autodiscover saat mengupdate composer. Kemudian publikasikan `tagging.php` dan jalankan migrasi database dengan perintah ini:

```
php artisan vendor:publish --provider="Conner\Tagging\Providers\TaggingServiceProvider"
php artisan migrate
```

# Setup Models

Kemudian siapkan models yang akan digunakan, asumsikan models `Post.php`, dengan menambahkan baris ini `use \Conner\Tagging\Taggable;` kedalam class.

```
{
    use \Conner\Tagging\Taggable;
    protected $fillable = ['title','tags','description'];
}
```

# Setup Controller

Di controller yang akan digunakan, asumsikan `PostController.php`, pada bagian store data tambahkan baris untuk memasukkan data tag ke database. Sesuaikan kode dibawah ini:

```
{
    public function store(Request $request)
    {
        $this->validate($request, [
            'title' => 'required',
            'description' => 'required',
            'tags' => 'required',
        ]);

        $input = $request->all();
        $tags = explode(", ", $input['tags']); // pecahkan string ke array tags
        $post = Post::create($input); // data post ke db
        $post->tag($tags); // data array tags ke db

        return back()->with('success','Post created successfully.');
    }
}
```

# Setup View

Untuk layout dapat disesuaikan, atau bisa menggunakan Bootstrap, JQuery dan [Bootstrap Tags Input](https://bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples/). Untuk menggunakan Bootstrap Tags Input cukup tambahkan `data-role="tagsinput"` ke input field yang akan secara otomatis mengubahnya menjadi tag input field. Sesuaikan contoh dibawah ini:

```
<form method="POST" action="{{ route('posts.store') }}">
    ...
    <div class="form-group">
        <label>Tags : <span class="text-danger">*</span></label>
        <br>
        <input type="text" data-role="tagsinput" name="tags" class="form-control tags">
        <br>
        @if ($errors->has('tags'))
            <span class="text-danger">{{ $errors->first('tags') }}</span>
        @endif
    </div>
    ...
</form>
```

Untuk menampilkan tag yang sudah dimasukkan bersamaan dengan postingan dapat jalankan perintah berikut:

```
@foreach($posts as $post)
    ...
    <div class="post-tags mb-4">
        <strong>Tags : </strong>
        @foreach($post->tags as $tag)
            <span class="badge badge-info">{{$tag->name}}</span>
        @endforeach
    </div>
    ...
@endforeach
```

---

That’s it! Sistem tag menggunakan laravel sudah siap digunakan. Untuk informasi lebih lanjut atau contoh penggunaan lain tentang package ini dapat dilihat di halaman github [rtconner/laravel-tagging](https://github.com/rtconner/laravel-tagging).