Membuat Pendaftaran Siswa Baru (PSB) dengan Laravel (Bagian Kedua)
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..