Sulhi.id

Catatan Kecil Seputar Blogging dan Koding

Membuat Pendaftaran Siswa Baru (PSB) dengan Laravel (Bagian Kedua)

Monday, December 10th, 2018     Laravel

Pada Tutorial kedua ini kita akan membahasa tentang bagaimana membuat seeding dan blade template serta mengkustomisasi feature Register menjadi Pendaftaran PSB Online.

Membuat Seeding

Sebagaimana yang sudah dijelaskan pada tutorial sebelumnya, bahwa PSB Online ini akan menggunakan login multiuser, yang artinya baik sebagai admin maupun calon siswa akan menggunakan form login yang sama, di mana ketika user login akan diarahkan ke dashboard sesuai level (hak akses).

Untuk user dengan level calon siswa (pendaftar), datanya akan ter-record sewaktu melakukan pendaftaran. Nah, bagaimana dengan data untuk level Admin? Tentunya kita harus menginput secara manual data untuk Admin. Di Laravel untuk menginput data ke database bisa dilakukan dengan cara Seeding.

Saat ini terdapat dua tabel yang sudah dibuat dengan menggunakan migrasi, yaitu tabel Users dan Biodata.  Mari kita buat seeder untuk menginput data Admin ke dalam dua tabel tersebut dengan generate seeder sebagai berikut:

E:\MyProject\PSB-Online>php artisan make:seeder UsersTableSeeder
Seeder created successfully.

Perintah di atas akan men-generate file seeding UsersTableSeeder.php yang terletak pada folder database/seeds/

<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
    }
}

Selanjutnya kita buat juga seeder untuk table Biodata

E:\MyProject\PSB-Online>php artisan make:seeder BiodataTableSeeder

Pada file seeder UsersTableSeeder.php dan BiodataTableSeeder.php di atas, akan kita tambahkan kode untuk menginsert data dengan menggunakan perintah Query Builder. Silakan edit dan sesuaikan dengan kode di bawah ini:

UsersTableSeeder.php

<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            'email' => 'admin@localhost.com',
            'password' => bcrypt('Admin123'),
            'level' => 0,
        ]);
    }
}

BiodataTableSeeder.php

<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class BiodataTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('biodata')->insert([
            'nama' => 'Administrator',
            'nis' => '-',
            'tempat_lahir' => '-',
            'tanggal_lahir' => '1982-12-12',
            'nem' => '-',
            'no_ijazah' => '-',
            'nama_ortu' => '-',
            'pekerjaan_ortu' => '-',
            'telp' => '-',
            'alamat' => '-',
            'user_id' => 1,
        ]);

    }
}

Pada baris kode ke-4, baik pada UsersTableSeeder.php maupun pada BiodataTableSeeder.php terdapat kode use Illuminate\Support\Facades\DB;.  Kode tersebut merupakan class untuk Query Builder.  Adapun query untuk insert data pada tabel users (UsersTableSeeder.php) terletak pada baris ke-15 sampai ke-19. Sementara untuk tabel Biodata (BiodataTableSeeder.php) ada pada baris kode ke-15 sampai ke-27.   

Langkah selajutnya edit file DatabaseSeeder.php yang berada pada folder database/seeds/ sehingga keseluruhan kode seperti berikut:

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call(UsersTableSeeder::class);
        $this->call(BiodataTableSeeder::class);

    }
}

Berikutnya adalah menjalankan seeder, tetapi sebaiknya lakukan terlebih dahulu dump-autoload agar file seeder ter-load. Selanjutnya lakukan rollback migrasi mengingat terdapat relasi antara tabel users dengan tabel biodata di mana ID untuk Admin bernilai 1. Jika tidak melakukan roolback, dihawatirkan sudah ada user lain yang tersimpan dalam database melalui menu register.

php artisan migrate:rollback
php artisan migrate
composer dump-autoload
php artisan db:seed

Sekarang silakan test login sebagai Admin dengan  email dan password yang barusan diinsert melalui seeding.

Mengganti Nama Project Laravel Menjadi PSB Online

Ketika megklik menu Login atau Register, nampak pada header bagian kiri terdapat nama Laravel. Bagaimana cara merubah menjadi PSB Online? Caranya cukup mudah, yaitu dengan mengedit file .env dan ganti  APP_NAME=Laravel menjadi APP_NAME="PSB Online".

Menampilkan Data Pada Blade

Setelah user berhasil login, controller akan mengarahkan ke home.blade.php  pada bagian header sebelah kanan terdapat menu dropdown, seharusnya pada menu tersebut muncul nama user. Kenapa tidak muncul? Benar, jawabannya dikarenakan kolom name dihilangkan dan dialihkan ke tabel Biodata.

Bagaimana cara memunculkan nama user pada menu tersebut? Mari kita buka file home.blade.php

Perhatian kode baris pertama @extends('layouts.app'). Artinya, file home.blade.php meng-extend atau meng-include file app.blade.php yang berada pada folder layouts. File app.blade.php merupakan frame atau template, sementara file home.blade.php hanya berisi konten atau bagian dari file app.blade.php.

Mari kita buka file tersebut. 

Pada baris ke-54 ganti kode {{ Auth::user()->name }} menjadi {{ Auth::user()->Biodata->nama }}. Hasilnya, nama user akan muncul pada menu dropdown.

Terakhir, kita coba muculkan data email user pada dashboard atau file home.blade.php. Tambahkan kode berikut setelah kata You are logged in!.

<p>{{ Auth::user()->email }}</p>

Output akhir..