Laravel Livewire Authentication #4 : Proses Register


Laravel Livewire Authentication #4 : Proses Register

Halo teman-teman semuanya, sekarang kita akan belajar membuat proses register dengan Laravel dan Livewire. Jika di Laravel untuk membuat logic application ada di dalam controller, maka di Livewire kita tidak akan menggunakan controller lagi melainkan component. Keuntungan menggunakan component salah satunya adalah reusable, yaitu bisa digunakan berulang kali tanpa harus menuliskannya lagi.

Langkah 1 - Membuat Component Register

Silahkan masuk di dalam folder project kemudian jalankan perintah di bawah ini untuk membuat component Register.

php artisan make:livewire auth.register

Di atas kita akan membuat sebuah component baru dengan nama register yang berada di dalam folder auth. Jika perintah di atas berhasil maka kita akan dibuatkan 2 file, yaitu class dan view.

app/Http/Livewire/Auth/Register.php
resources/views/livewire/auth/register.blade.php

Langkah 2 - Membuat Route Register

Sekarang kita lanjutkan untuk membuat route untuk component register, silahkan buka file routes/web.php kemudian tambahkan kode berikut ini :

Route::group(['middleware' => 'guest'], function(){

    //register
    Route::livewire('/register', 'auth.register')
    ->layout('layouts.app')->name('auth.register');

});

Di atas untuk route register kita taruh di dalam middleware guest dan jika kita perhatikan lagi untuk route register akan menggunakan layouts yang bernama app.blade.php yang berada di dalam folder resources/layouts.

->layout('layouts.app')

Langkah 3 - Membuat Fungsi Register

Pertama kita akan membuat fungsi register di dalam class Register, silahkan buka file app/Http/Livewire/Auth/Register.php kemudian ubah kodenya menjadi seperti berikut ini :

<?php

namespace App\Http\Livewire\Auth;

use App\User;
use Livewire\Component;

class Register extends Component
{   
    public $name;
    public $email;
    public $password;
    public $password_confirmation;
    
    /**
     * store
     *
     * @return void
     */
    public function store()
    {
        $this->validate([
            'name'      => 'required',
            'email'     => 'required|email|unique:users',
            'password'  => 'required|confirmed'
        ]);

        $user = User::create([
            'name'      => $this->name,
            'email'     => $this->email,
            'password'  => bcrypt($this->password)
        ]);

        if($user) {
            session()->flash('success', 'Register Berhasil!.');
            return redirect()->route('auth.login');
        }
    }

    /**
     * render
     *
     * @return void
     */
    public function render()
    {
        return view('livewire.auth.register');
    }
}

Pertama kita import Model User terlebih dahulu, karena kita akan menggunakan model ini untuk memasukkan data user ke dalam database.

use App\User;

Di atas kita juga membuat beberapa public properti untuk kebutuhan data register, yaitu :

public $name;
public $email;
public $password;
public $password_confirmation;

Kemudian kita membuat function store, fungsi ini akan digunakan untuk menyimpan data yang di inputkan dari form ke database. Dan di dalam function store kita juga membuat sebuah validasi, kurang lebih seperti berikut ini :

$this->validate([
  'name'      => 'required',
  'email'     => 'required|email|unique:users',
  'password'  => 'required|confirmed'
]);

Jika validasi di atas terpenuhi maka akan melakukan penambahan data user menggunakan sintaks eperti berikut ini :

$user = User::create([
  'name'      => $this->name,
  'email'     => $this->email,
  'password'  => bcrypt($this->password)
]);

Kemudian kita membuat sebuah kondisi, jika data user berhasil di simpan ke dalam database maka akan menampilkan pesan sukses dan di arahkan ke dalam route yang bernama auth.login

if($user) {
  session()->flash('success', 'Register Berhasil!.');
  return redirect()->route('auth.login');
}

Langkah 4 - Membuat View Register

Setelah kita berhasil membuat fungsi untuk register, sekarang kita lanjutkan untuk membuat halaman viewnya. Silahkan buka file resources/views/livewire/auth/register.blade.php dan ubah kodenya menjadi seperti berikut ini :

<div>
    <div class="container" style="margin-top: 120px">
        <div class="row justify-content-center">
            <div class="col-md-6">
                <div class="card border-0 rounded shadow">
                    <div class="card-body">
                        <h5 class="text-center"> <i class="fa fa-user-plus"></i> REGISTER</h5>
                        <hr>
                        <form wire:submit.prevent="store">

                            <div class="row">
                                <div class="col-md-6">
                                    <div class="form-group">
                                        <label class="font-weight-bold">NAMA LENGKAP</label>
                                        <input type="text" wire:model.lazy="name" class="form-control @error('name') is-invalid @enderror"
                                            placeholder="Nama lengkap">
                                        @error('name')
                                        <div class="invalid-feedback">
                                            {{ $message }}
                                        </div>
                                        @enderror
                                    </div>
                                </div>
                                <div class="col-md-6">
                                    <div class="form-group">
                                        <label class="font-weight-bold">ALAMAT EMAIL</label>
                                        <input type="text" wire:model.lazy="email" class="form-control @error('email') is-invalid @enderror"
                                            placeholder="Alamat Email">
                                        @error('email')
                                        <div class="invalid-feedback">
                                            {{ $message }}
                                        </div>
                                        @enderror
                                    </div>
                                </div>
                            </div>

                            <div class="row">
                                <div class="col-md-6">
                                    <div class="form-group">
                                        <label class="font-weight-bold">PASSWORD</label>
                                        <input type="password" wire:model.lazy="password"
                                            class="form-control @error('password') is-invalid @enderror" placeholder="Password">
                                        @error('password')
                                        <div class="invalid-feedback">
                                            {{ $message }}
                                        </div>
                                        @enderror
                                    </div>
                                </div>
                                <div class="col-md-6">
                                    <div class="form-group">
                                        <label class="font-weight-bold">KONFIRMASI PASSWORD</label>
                                        <input type="password" wire:model.lazy="password_confirmation"
                                            class="form-control" placeholder="Konfirmasi Password">
                                    </div>
                                </div>
                            </div>
                            
                            <button type="submit" class="btn btn-primary btn-block">REGISTER</button>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Jika teman-teman perhatikan di atas untuk action dari form kita arahkan ke dalam function store yang berada di dalam component register menggunakan directive wire:submit.

<form wire:submit.prevent="store">

Sekarang teman-teman bisa mencoba menjalankan projectnya di http://localhost:8000/register maka kurang lebih hasilnya seperti berikut ini :


Sekarang kita bisa mencoba menambahkan data user baru ke dalam database, silahkan diisi untuk inputan nama, email, password dan konfirmasi password. Jika berhasil maka kurang lebih tampilannya sperti berikut ini :


Di atas sebenarnya kita sudah berhasil membuat fungsi register, error di atas muncul karena kita belum memiliki route yang bernama auth.login, di artikel selanjutnya kita akan membuat component untuk login.


EBOOK MEMBANGUN TOKO ONLINE DENGAN LARAVEL DAN LIVEWIRE : https://bit.ly/ebook-laravel-livewire


Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami