Tutorial Membuat Barcode Generator di Laravel

Tutorial Membuat Barcode Generator di Laravel

id6 min read • 6768 views

Laravel Barcode Generator - Hello Devs 👋 Pada kesempatan kali ini, saya akan share saya membuat barcode generator menggunakan barcode package dari Milon di Laravel 9. Barcode pada umumnya dapat kita jumpai pada kemasan produk seperti kopi, mie, snack dan produk-produk lainnya. Barcode biasanya digunakan oleh kasir untuk mendapatkan informasi dari produk tersebut yang tidak dimuat pada kemasan seperti harga, stok dan informasi-informasi yang lainnya.

Nah, pada kesempatan kali ini, saya akan mengimplementasikan dengan membuat barcode untuk mengetahui harga dari suatu produk. Langkah-langkah yang akan saya jelaskan pada artikel kali ini cukup simple saja, yaitu mulai dari install laravel, barcode package, generate dummy data, hingga menampilkan data product beserta barcode.

Oke, mari kita langsung saja ke langkah-langkahnya 👇

Step 1: Install Laravel

//via Laravel Installer
composer global require laravel/installer
laravel new laravel-barcode

//via Composer
composer create-project laravel/laravel laravel-barcode

Langkah yang pertama yaitu kita akan mulai dari install laravel project baru. Untuk menginstall laravel, teman-teman dapat menggunakan cara via laravel installer, composer atau cara lainnya yang disediakan oleh laravel. Untuk project latihan kali ini, saya akan memberikan nama laravel-barcode.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_barcode
DB_USERNAME=root
DB_PASSWORD=

Jika proses installasi laravel sudah selesai, jangan lupa untuk membuat database baru dan menyesuaikan value pada variable di file .env dengan nama database yang baru saja dibuat.

Step 2: Install Laravel Barcode Package

composer require milon/barcode

Seperti yang telah saya sebutkan di awal, untuk membuat barcode di laravel, kita dapat menggunakan barcode package dari Milon. Untuk installasinya, kita hanya tinggal menjalankan perintah installasi via composer dengan perintah seperti di atas.

config/app.php

'providers' => [
    // ...
    Milon\Barcode\BarcodeServiceProvider::class,
]

Jika proses installasi barcode package sudah selesai, silahkan buka file config/app.php lalu tambahkan item Milon\Barcode\BarcodeServiceProvider::class, di dalam array providers seperti contoh di atas.

'aliases' => Facade::defaultAliases()->merge([
    // 'ExampleClass' => App\Example\ExampleClass::class,
    'DNS1D' => Milon\Barcode\Facades\DNS1DFacade::class,
    'DNS2D' => Milon\Barcode\Facades\DNS2DFacade::class,
])->toArray(),

Kemudian, tambahkan juga pada aliases seperti contoh kode di atas.

Step 3: Setup Migration & Factory

php artisan make:model Product -mf

Dan seperti yang telah saya sebutkan di awal, pada artikel ini saya akan mengimplementasikan barcode untuk mendeteksi harga dari product tersebut. Untuk itu, disini kita memerlukan model sekaligus table product beserta datanya. Silahkan jalankan perintah artisan seperti di atas untuk generate Product model beserta migration dan file ProductFactory.

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('slug');
        $table->text('description');
        $table->decimal('price', 8, 2);
        $table->timestamps();
    });
}

Selanjutnya, buka file {timestamp} _create_products_table.php dan sesuaikan kode pada function up menjadi seperti di atas. Sebagai contoh, disini kita hanya memerlukan fields name, slug, description dan price.

public function definition()
{
    $name = $this->faker->name();
    $slug = \Str::slug($name);
    return [
        'name' => $name,
        'slug' => $slug,
        'description' => $this->faker->text(),
        'price' => $this->faker->randomFloat(2, 0, 100),
    ];
}

Selesai setup file migration, kita lanjutkan untuk membuat dummy data menggunakan factory. Silahkan buka file di database/factories/ProductFactory.php, sesuaikan kode yang ada pada function definition() menjadi seperti di atas.

Disclaimer: Untuk nama produk dummy, disini menggunakan method name dari facker. Mungkin hasilnya akan terlihat aneh, karena disini kita inginnya membuat nama-nama produk, namun yang dihasilkan dari factory ini nanti merupakan nama-nama orang. Karena ini hanya untuk dummy data dan untuk latihan, saya rasa tidak terlalu bermasalah.

Step 4: Setup Route

Route::get('/', function () {
    return view('welcome',[
        'products' => App\Models\Product::all()
    ]);
});

Oke, kita lanjutkan pada step keempat yaitu melakukan setup pada route. Tidak banyak yang kita lakukan pada step ini, kita hanya menambahkan variable $products beserta data dari table products pada route bawaan dari Laravel.

Step 5: Setup View

<!doctype html>
<html lang="en">
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- Bootstrap CSS -->
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
        <title>Laravel Barcode Generator</title>
    </head>
    <body>
        <div class="container py-5">
            <div class="row justify-content-center">
                <div class="col-md-12">
                    <table class="table table-striped">
                        <thead>
                            <tr>
                                <th scope="col">#</th>
                                <th scope="col">Barcode</th>
                                <th scope="col">Name</th>
                                <th scope="col">Description</th>
                            </tr>
                        </thead>
                        <tbody>
                            @forelse ($products as $key => $product)
                            <tr>
                                <th scope="row">{{ ++$key }}</th>
                                <td>{!! DNS1D::getBarcodeHTML('$ '. $product->price, 'C39') !!}</td>
                                <td>{{ $product->name }}</td>
                                <td>{{ Str::limit($product->description, 50, '...') }}</td>
                            </tr>
                            @empty
                            <tr>
                                <td colspan="7" class="text-center">No data available</td>
                            </tr>
                            @endforelse
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
    </body>
</html>

Oke, sampai dipenghujung artikel. Pada step yang terakhir ini, kita akan melakukan setup view dengan mengubah kode pada file welcome.blade.php menjadi seperti di atas. Disini kita akan menggunakan component table dari bootstrap, dimana dalam table tersebut, kita akan menampilkan barcode dengan varian  C39.

Untuk varian barcode yang lainnya, teman-teman bisa cek di official repository. 👈

Step 6: Testing

laravel barcode generator

Setelah menyelesaikan langkah-langkah yang telah saya jelaskan di atas, sekarang kita bisa mencoba fitur barcode yang telah kita buat di laravel 9 ini. Silahkan jalankan laravel project, lalu buka project pada browser teman-teman. Cobalah dengan melakukan scan pada salah satu barcode yang ada menggunakan scanner di gadget atau device lainnya. Jika barcode sukses terbaca, maka akan menampilkan informasi harga dari product tersebut.

Cukup sekian artikel tentang cara membuat barcode generator di laravel 9 ini, semoga artikel ini dapat membantu teman-teman dan sampai jumpa di artikel berikutnya. 👋 👨‍💻

 

📖 Full Documentation: Laravel Barcode Package

Credit: Work illustrations by Storyset

Published on April 02, 2022
Last updated on June 21, 2024

If you like this post and want to support us, you can support us via buymeacoffee or trakteer.