Anda di halaman 1dari 69

Ch 1 Laravel dan Paket

1.1. Instalasi Laravel

Untuk instalasi laravel memerlukan PHP Package Manager yang bernama composer. Berikut ialah perintah instalasi laravel dengan menggunakancomposer:

composer create-project laravel/laravel NAMA_APP --prefer-dist

Misalkanmembuataplikasidengannama“app1”,makaperintahdiatas

menjadi

composer create-project laravel/laravel app1 --prefer-dist

Ketikaprosesinstalasiselesaimakaterdapatfolderdengannamaapp1

yangberisikodelaravelsepertiditunjukanpadagambarberikut:

Gambar1.1DirektoriFrameworkLaravel 1.2. Instalasi Paket a . Instalasi Guzzle Guzzle merupakan salah satu paket pada PHP

Gambar1.1DirektoriFrameworkLaravel

1.2. Instalasi Paket

a. Instalasi Guzzle

Guzzlemerupakan salah satu paket pada PHP yang digunakan untuk melakukanrequestterhadapresources.Guzzledapatdigunakanuntuk mengakses/consume API, misalnya API Samarinda. Untuk instalasi Guzzleialahsebagaiberikut:

1. BukaCMD,danCDkedalamfolderlaravel

2. Ketikanperintahberikut:

composer require guzzlehttp/guzzle

Perintah di atas akan menginstalkan paket kedalam laravel Anda. Tunggudanpastikanpaketiniterinstalsampaiselesai.

GuzzlemerupakanpaketPHPdanbukankhususdibuatuntuklaravel

sehinggatidakadakonfigurasi!

b. Installasi FormBuilder

Form merupakan suatu tampilan yang digunakan untuk mekanisme pengumpulan data. Suatu form dibuat dengan menggunakan HTML. Namun, pada laravel terdapat paket yang dapat digunakan untuk meng-generateFormyakniKris\LaravelFormBuilder.

1. Instalasi

Untuk instalasi paket ini dengan menggunakan composer, dengan perintahsebagaiberikut:

composer require kris/laravel-form-builder

Perintah diatas akan otomatis mendownload paket tersebut untuk Anda.

2. Konfigurasi

Setiap paket yang baru ditambahkan pada laravel umumnya di

ini

registrasi

(kris/laravel-form-builder)andaharusmenambahkanbarisberikut:

pada

file

config/app.php.

Pada

paket

Kris\LaravelFormBuilder\FormBuilderServiceProvider::class

Padabagian“providers”.Danbarisberikut:

'FormBuilder' => Kris\LaravelFormBuilder\Facades\FormBuilder::class

Padabagian“aliases”.

1.3.

Konfigurasi Parameter

a. API Samarinda

Pada pembahasan ini, data API samarinda yang digunakan ialah data kelurahandandatakecamatan.SedangkanURLdantokenaksesAnda dapat peroleh setelah mendaftar pada alamat website http://api.samarindakota.go.id, setelah Anda mendaftar dan mendapatkan token Anda dapat melakukan konfigurasi pada file .env denganmengikutipanduanberikut:

konfigurasi pada file .env denganmengikutipanduanberikut: 1 . Buka file . e n v , k e

1. Buka file .env,kemudian tambahkan kode dibawah ini padabaris

bagianatas.

SAMARINDA_TOKEN=TOKEN

API_KELURAHAN=http://api.samarindakota.go.id/api/v2/generate/

data-monografi/kelurahan

API_KECAMATAN=http://api.samarindakota.go.id/api/v2/generate/

data-monografi/kecamatan

2. GantiTOKENpadakodediatassesuaidengantokenAnda!

b.

Database

Untuk konfigurasi database, pastikan Anda telah membuat satu buah database.UntukmembuatdatabasedapatmenggunakanPHPMyAdmin yang terdapat pada alamat http://localhost/phpmyadmin. Misalkan Anda membuat database dengan nama “db_app1”. Kemudian untuk konfigurasiikutilangkah-langkahberikut:

1. Bukafile.envdantemukanparametersepertiberikut:

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=homestead

DB_USERNAME=homestead

DB_PASSWORD=homestead

2. Ubahlahparameterdiatassehinggamenjadisepertiini:

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=db_app1

DB_USERNAME=root

DB_PASSWORD=

Ch 2 Database

Pada pembahasan sebelumnya (1.3 bagian b) telah dijelaskan bagaimanamembuatdatabasedanmelakukankonfigurasi.Padabagian iniakanmembahasmengenaimigrationuntukmembuatstrukturtabel danmigrateuntukmentranslatemigrationkedalamdatabase.

2.1. Desain Tabel

a. Tabel users

users

id

username

password

level

kecamatan

kelurahan

alamat

b. Tabel kios

kios

id

lokasi

penyewa_id

harga

c. Tabel tagihan

tagihan

id

kios_id

penyewa_id

harga

status

tahun

bulan

d. Tabel Produk

produk

id

kios_id

nama

deskripsi

harga

kategori

e. Tabel Kendaraan

kendaraan

id

pemilik_id

deposit

nopol

f. Tabel Parkir

parkir

id

kendaraan_id

nominal

status

petugas_id

2.2.

Migrasi

Migrasi pada framework merupakan suatu mekanisme untuk mendesainsuatuskematabel.PadaLaravelmigrasidalambentukkelas yang mendefinisikan suatu skema tabel yang nantinya akan ditransformasidalamstrukturtabel.Migrasidigunakanuntukmembuat atau memodifikasi tabel. Selain itu dengan menggunakan migrasi, perubahan-perubahanpadastrukturtabeldapatdiamatidenganjelas.

Untukmembuatmigrasiyangdigunakanuntukmendefinsikanstruktur tabel pada database dapat menggunakan perintah artisan sebagai berikut:

php artisan make:migration JUDUL_MIGRASI --create=NAMA_TABLE

Sedangkanperintahuntukmengubah/menambahkankolompadatabel

ialah

php artisan make:migration JUDUL_MIGRASI --table=NAMA_TABLE

Semua file migrasi yang dibuat dengan menggunakan perintah diatas dapatditemuipadafolderdatabase/migrations

a. Persiapan (Hapus File Migrasi Bawaan)

Ketika pertama kali diinstal terdapat dua buah migrasi bawaan dari Laravel. Namun, pada pembahasan ini kita tidak menggunakannya,

sehinggaAndadapatmenghapus2filemigrasitersebut.

b. Migrasi Tabel users

Misalkan kita ingin membuat suatu migrasi yang digunakan untuk membuat tabel users, maka kitamengetikan perintahsebagai berikut padaCMD:

php artisan make:migration buat_tabel_user --create=users

Setelahmenjalankanperintahdiatasmakaakanterbentukfilemigrasi

padafolderdatabase/migrationssebagaiberikut:

<?php

use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration;

class BuatTabelUser extends Migration

{

 

/**

*

Run the migrations.

*

*

@return void

*/

public function up()

{

 

Schema::create('users', function (Blueprint $table) {

});

 

}

/**

*

Reverse the migrations.

*

*

@return void

*/ public function down()

{

 

Schema::dropIfExists('users');

 

}

}

Ubahfungsiup()diatassehinggamenjadisebagaiberikut:

public function up()

{

Schema::create('users', function (Blueprint $table) { $table->bigIncrements('id'); $table->string("username"); $table->string("password"); $table->string("level"); $table->string("kecamatan"); $table->string("kelurahan"); $table->string("alamat");

$table->timestamps();

}

});

Kemudian,bukaCMDdanketikanperintah:

php artisan migrate

Perintah di atas akan mengeksekusi fungsi up() sehingga akan menghasilkan tabel users pada database Anda. Cek database Anda menggunakanPHPMyAdmindanpastikantabeltelahterbentukdancek pulakolom-kolomnya!

c. Migrasi Tabel kios

Misalkan kita ingin membuat suatu migrasi yang digunakan untuk membuat tabel kios, maka kita mengetikan perintah sebagai berikut padaCMD:

php artisan make:migration buat_tabel_kios --create=kios

Setelahmenjalankanperintahdiatasmakaakanterbentukfilemigrasi

padafolderdatabase/migrationssebagaiberikut:

<?php

use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration;

class BuatTabelKios extends Migration

{

/** * Run the migrations.

*

*

@return void

*/

public function up()

{

 

Schema::create('kios', function (Blueprint $table) {

});

}

/**

*

Reverse the migrations.

*

*

@return void

*/ public function down()

{

Schema::dropIfExists('kios');

}

}

Ubahfungsiup()diatassehinggamenjadisebagaiberikut:

public function up()

{

 

Schema::create('kios', function (Blueprint $table) { $table->bigIncrements('id'); $table->string("lokasi"); $table->integer("penyewa_id"); $table->float("harga"); $table->timestamps();

});

}

Kemudian,bukaCMDdanketikanperintah:

php artisan migrate

Perintah di atas akan mengeksekusi fungsi up() sehingga akan menghasilkan tabel kios pada database Anda. Cek database Anda menggunakanPHPMyAdmindanpastikantabeltelahterbentukdancek pulakolom-kolomnya!

d. Migrasi Tabel tagihan

Misalkan kita ingin membuat suatu migrasi yang digunakan untuk membuattabeltagihan,makakitamengetikanperintahsebagaiberikut padaCMD:

php artisan make:migration buat_tabel_tagihan --create=tagihan

Setelahmenjalankanperintahdiatasmakaakanterbentukfilemigrasi

padafolderdatabase/migrationssebagaiberikut:

<?php

use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration;

class BuatTabelTagihan extends Migration

{

/**

*

Run the migrations.

*

*

@return void

*/ public function up()

{

 

Schema::create('tagihan', function (Blueprint $table) {

});

}

/**

*

Reverse the migrations.

*

*

@return void

*/ public function down()

{

Schema::dropIfExists('tagihan');

}

}

Ubahfungsiup()diatassehinggamenjadisebagaiberikut:

public function up()

{

 

Schema::create('tagihan', function (Blueprint $table) { $table->bigIncrements('id'); $table->string("kios_id"); $table->integer("penyewa_id"); $table->integer("bulan"); $table->integer("tahun"); $table->string("status"); $table->float("harga"); $table->timestamps();

});

}

Kemudian,bukaCMDdanketikanperintah:

php artisan migrate

Perintah di atas akan mengeksekusi fungsi up() sehingga akan menghasilkan tabel tagihan pada database Anda. Cek database Anda menggunakanPHPMyAdmindanpastikantabeltelahterbentukdancek pulakolom-kolomnya!

e. Migrasi Tabel produk

Misalkan kita ingin membuat suatu migrasi yang digunakan untuk membuattabelproduk,makakitamengetikanperintahsebagaiberikut padaCMD:

php artisan make:migration buat_tabel_produk --create=produk

Setelahmenjalankanperintahdiatasmakaakanterbentukfilemigrasi

padafolderdatabase/migrationssebagaiberikut:

<?php

use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration;

class BuatTabelProduk extends Migration

{

/**

*

Run the migrations.

*

*

@return void

*/

public function up()

{

 

Schema::create('produk', function (Blueprint $table) { $table->bigIncrements('id'); $table->timestamps();

});

}

/**

*

Reverse the migrations.

*

*

@return void

*/ public function down()

{

Schema::dropIfExists('produk');

}

}

Ubahfungsiup()diatassehinggamenjadisebagaiberikut:

public function up()

{

 

Schema::create('produk', function (Blueprint $table) { $table->bigIncrements('id'); $table->string("kios_id"); $table->integer("nama"); $table->text("deskripsi"); $table->float("harga"); $table->string("kategori"); $table->timestamps();

});

}

Kemudian,bukaCMDdanketikanperintah:

php artisan migrate

Perintah di atas akan mengeksekusi fungsi up() sehingga akan menghasilkan tabel produk pada database Anda. Cek database Anda menggunakanPHPMyAdmindanpastikantabeltelahterbentukdancek pulakolom-kolomnya!

f. Migrasi Tabel kendaraan

Misalkan kita ingin membuat suatu migrasi yang digunakan untuk membuat tabel kendaraan, maka kita mengetikan perintah sebagai berikutpadaCMD:

--create=kendaraan

Setelahmenjalankanperintahdiatasmakaakanterbentukfilemigrasi

padafolderdatabase/migrationssebagaiberikut:

<?php

use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration;

class BuatTabelKendaraan extends Migration

{

 

/**

*

Run the migrations.

*

*

@return void

*/

public function up()

{

 

Schema::create('kendaraan', function (Blueprint $table)

{

 

$table->bigIncrements('id');

$table->timestamps();

});

 

}

/**

*

Reverse the migrations.

*

*

@return void

*/ public function down()

{

 

Schema::dropIfExists('kendaraan');

 

}

}

Ubahfungsiup()diatassehinggamenjadisebagaiberikut:

public function up()

{

Schema::create('kendaraan', function (Blueprint $table)

{

$table->bigIncrements('id');

$table->integer("pemilik_id");

$table->float("deposit");

$table->string("nopol");

$table->timestamps();

}

});

Kemudian,bukaCMDdanketikanperintah:

php artisan migrate

Perintah di atas akan mengeksekusi fungsi up() sehingga akan menghasilkantabelkendaraanpadadatabaseAnda.CekdatabaseAnda menggunakanPHPMyAdmindanpastikantabeltelahterbentukdancek pulakolom-kolomnya!

g. Migrasi Tabel parkir

Misalkan kita ingin membuat suatu migrasi yang digunakan untuk membuattabelparkir,makakitamengetikanperintahsebagaiberikut padaCMD:

php artisan make:migration buat_tabel_parkir --create=parkir

Setelahmenjalankanperintahdiatasmakaakanterbentukfilemigrasi

padafolderdatabase/migrationssebagaiberikut:

<?php

use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration;

class BuatTabelParkir extends Migration

{

 

/**

*

Run the migrations.

*

*

@return void

*/ public function up()

{

 

Schema::create('parkir', function (Blueprint $table) { $table->bigIncrements('id'); $table->timestamps();

});

 

}

/**

*

Reverse the migrations.

*

*

@return void

*/ public function down()

{

 

Schema::dropIfExists('parkir');

 

}

}

Ubahfungsiup()diatassehinggamenjadisebagaiberikut:

public function up()

{

Schema::create('parkir', function (Blueprint $table) { $table->bigIncrements('id'); $table->integer("kendaraan_id"); $table->float("nominal"); $table->string("status"); $table->string("petugas_id"); $table->timestamps();

});

}

Kemudian,bukaCMDdanketikanperintah:

php artisan migrate

Perintah di atas akan mengeksekusi fungsi up() sehingga akan menghasilkan tabel parkir pada database Anda. Cek database Anda menggunakanPHPMyAdmindanpastikantabeltelahterbentukdancek pulakolom-kolomnya!

Ch 3 Model

ModelmerupakanrepresentasidaritabelpadaDatabase.Prinsipnya1

modelmewakili1tabel.Sehinggaketikamisalkankitamemiliki5tabel,

maka kita dapat membuat 5 model. Pada Sesi sebelumnya kita telah memiliki 6 buah tabel sehingga kita dapat membuat 6 buah model untukmerepresentasikantabel-tabeltersebut.

No

Tabel

Model

1

users

User

2

kios

Kios

3

tagihan

Tagihan

4

produk

Produk

5

kendaraan

Kendaraan

6

parkir

Parkir

Untuk membuat model cara termudah ialah dengan mengguanakn perintahCMDsebagiaberikut:

php artisan make:model NAMA_MODEL

Setiapkaliperintahdiatasdijalankan,makaakanmembuatfilemodel

padafolderapp/

3.1. Membuat Model

a. Model User

1. ModelUsertelahdisediakansecaradefaultolehLaravel,yangdapat diaksespadaapp/User.phpdengankodesebagaiberikut:

<?php

namespace App;

use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable

{

use Notifiable;

/**

* The attributes that are mass assignable.

*

* @var array

*/ protected $fillable = [ 'name', 'username, 'password',

];

/**

*

The attributes that should be hidden for arrays.

*

*

@var array

*/ protected $hidden = [ 'password', 'remember_token',

];

/**

*

The attributes that should be cast to native types.

*

*

@var array

*/ protected $casts = [ 'email_verified_at' => 'datetime',

];

}

Ubahsehinggamenjadisepertiberikut:

<?php

namespace App;

use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable

{

use Notifiable;

/**

*

The attributes that are mass assignable.

*

*

@var array

*/ protected $fillable = [

'username', 'kelurahan', 'alamat' ];

/**

'password',

'level',

'kecamatan',

* The attributes that should be hidden for arrays.

*

* @var array

*/ protected $hidden = [ 'password', 'remember_token',

];

/**

*

The attributes that should be cast to native types.

*

*

@var array

*/ protected $casts = [ 'email_verified_at' => 'datetime',

];

}

2. Kodediatasialahkodeuntukmodelyangmerepresentasikantable usersdansiapdigunakanpadatutorialselanjutnya.

b. Model Kios

1. PadacmdKetikanPerintah

php artisan make:model Kios

2. Perintah diatas akan menghasilkan Model dengan nama Kios.php padaapp/Kios.php.Dengankodesebagaiberikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Kios extends Model

{

}

//

Ubahsehinggamenjadisepertiberikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Kios extends Model

{

protected $table = "kios"; protected $fillable = ["lokasi", 'penyewa_id', 'harga'];

}

3. Kodediatasialahkodeuntukmodelyangmerepresentasikantable

kiosdansiapdigunakanpadatutorialselanjutnya.

c.

Model Tagihan

1. PadacmdKetikanPerintah

php artisan make:model Tagihan

2. PerintahdiatasakanmenghasilkanModeldengannamaTagihan.php

padaapp/Tagihan.php,dengankodesebagaiberikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tagihan extends Model

{

}

//

Ubahsehinggamenjadisepertiberikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tagihan extends Model

{

protected $table = "tagihan";

protected $fillable = ["kios_id", 'penyewa_id', 'harga', 'bulan', 'tahun', 'status'];

}

Kodediatasialahkodeuntukmodelyangmerepresentasikantable

tagihandansiapdigunakanpadatutorialselanjutnya.

d.

Model Produk

1. PadacmdKetikanPerintah

php artisan make:model Produk

2. PerintahdiatasakanmenghasilkanModeldengannamaProduk.php

padaapp/Produk.php,dengankodesebagaiberikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Produk extends Model

{

}

//

Ubahsehinggamenjadisepertiberikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Produk extends Model

{

protected $table = "produk";

protected $fillable = ["kios_id", 'nama', 'deskripsi', 'harga', 'kategori'];

}

Kode di atas ialah kode untuk model yang merepresentasikan table produkdansiapdigunakanpadatutorialselanjutnya.

e. Model Kendaraan

1. PadacmdKetikanPerintah

php artisan make:model Kendaraan

2. Perintah diatas akan menghasilkan Model dengan nama Kendaraan.php pada app/Kendaraan.php, dengan kode sebagai berikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Kendaraan extends Model

{

}

//

Ubahsehinggamenjadisepertiberikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Kendaraan extends Model

{

protected $table = "kendaraan"; protected $fillable = ["pemilik_id", 'deposit', 'nopol'];

}

Kode di atas ialah kode untuk model yang merepresentasikan table kendaraandansiapdigunakanpadatutorialselanjutnya.

f. Model Parkir

3. PadacmdKetikanPerintah

php artisan make:model Parkir

4. PerintahdiatasakanmenghasilkanModeldengannamaParkir.php

padaapp/Parkir.php,dengankodesebagaiberikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Parkir extends Model

{

}

//

Ubahsehinggamenjadisepertiberikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Parkir extends Model

{

protected $table = "parkir"; protected $fillable = ["pemilik_id", 'deposit', 'nopol'];

}

Kode di atas ialah kode untuk model yang merepresentasikan table parkirdansiapdigunakanpadatutorialselanjutnya.

3.2.

Relasi

Suatu tabel dengan tabel lain memiliki keterkaitan atau yang dikenal dengan relasi. Relasi antar tabel juga dapat didefinisikan pada level

Model.Terdapat4jenisrelasiyangseringdigunakanyakni

1) OnetoOneataudisebutsatukesatu.

2) OnetoManyataudisebutsatukebanyak

3) ManytoManyataudisebutbanyakkebanyak

a. Relasi User dengan Kios

a . Relasi User dengan Kios Dari gambar di atas menunjukan bahwa penyewa_id pada tabel

Dari gambar di atas menunjukan bahwa penyewa_id pada tabel kios ialahidpadatabeluserssehinggadapatdikatakanbahwarelasiantara keduatabelialah:

usersmemilikisatu/banyakkios,ataukiosdimilikiusers

Dalambahasainggis

usershasmanykios,orkiosbelongstousers

Sehingga kita harus definisikan pada Model User bahwa ia memiliki banyakKiosdenganmengikutilangkahberikut:

1. BukaUser.php!

2.

Tambahkanfungsirelasikios()sepertikodeberikut:

public function kios()

{

return $this->hasMany(Kios::class, 'penyewa_id', 'id');

}

Kemudian, kita juga harus definisikan pada Model Kios bahwa ia dimilikiolehUser,denganmengikutilangkahberikut:

1. BukaKios.php

2. Tambahkanfungsirelasipenyewa()sepertikodeberikut:

public function penyewa()

{

'id');

return

$this->belongsTo(User::class,

}

b. Relasi Kios dengan Tagihan

'penyewa_id',

} b . Relasi Kios dengan Tagihan 'penyewa_id', Darigambardiatasmenunjukanbahwakios_idpadatabeltagihanialah

Darigambardiatasmenunjukanbahwakios_idpadatabeltagihanialah

idpadatabelkiossehinggadapatdikatakanbahwarelasiantarakedua

tabelialah:

kiosmemilikisatu/banyaktagihan,atautagihandimilikikios

Dalambahasainggis

kioshasmanytagihan,ortagihanbelongstokios

Sehingga kita harus definisikan pada Model Kios bahwa ia memiliki banyakTagihandenganmengikutilangkahberikut:

1. BukaKios.php!

2. Tambahkanfungsirelasikios()sepertikodeberikut:

public function tagihan()

{

return $this->hasMany(Tagihan::class, 'kios_id', 'id');

}

Kemudian, kita juga harus definisikan pada Model Tagihan bahwa ia dimilikiolehKios,denganmengikutilangkahberikut:

3. BukaTagihan.php

4. Tambahkanfungsirelasikios()sepertikodeberikut:

public function kios()

{

return $this->belongsTo(Kios::class, 'kios_id', 'id');

}

c.

Relasi Kios dengan Produk

c . Relasi Kios dengan Produk Darigambardiatasmenunjukanbahwakios_idpadatabelprodukialah

Darigambardiatasmenunjukanbahwakios_idpadatabelprodukialah

idpadatabelkiossehinggadapatdikatakanbahwarelasiantarakedua

tabelialah:

kiosmemilikisatu/banyakkios,atauprodukdimilikikios

Dalambahasainggis

kioshasmanyproduk,orprodukbelongstokios

Sehingga kita harus definisikan pada Model Kios bahwa ia memiliki banyakProdukdenganmengikutilangkahberikut:

1. BukaKios.php!

2. Tambahkanfungsirelasiproduk()sepertikodeberikut:

public function produk()

{

return $this->hasMany(Produk::class, 'kios_id', 'id');

}

Kemudian, kita juga harus definisikan pada Model Produk bahwa ia dimilikiolehKios,denganmengikutilangkahberikut:

1. BukaProduk.php

public function kios()

{

return $this->belongsTo(Kios::class, 'kios_id', 'id');

}

d. Relasi User dengan Kendaraan

'id'); } d . Relasi User dengan Kendaraan Dari gambar di atas menunjukan bahwa pemilik_id pada

Dari gambar di atas menunjukan bahwa pemilik_id pada tabel kendaraan ialah id pada tabel users sehingga dapat dikatakan bahwa relasiantarakeduatabelialah:

usersmemilikisatu/banyakkendaraan,ataukendaraandimiliki

users

Dalambahasainggis

userhasmanykendaraan,orkendaraanbelongstousers

Sehingga kita harus definisikan pada Model User bahwa ia memiliki banyakKendaraandenganmengikutilangkahberikut:

1. BukaUser.php!

public function kendaraan()

{

return $this->hasMany(Kendaraan::class, 'kendaraan_id',

'id');

}

Kemudian,kitajugaharusdefinisikanpadaModelKendaraanbahwaia

dimilikiolehUser,denganmengikutilangkahberikut:

1. BukaKendaraan.php

2. Tambahkanfungsirelasipemilik()sepertikodeberikut:

public function pemiliki()

{

'id');

}

return

$this->belongsTo(User::class,

'pemilik_id',

e. Relasi Kendaraan dengan Parkir

'pemilik_id', e . Relasi Kendaraan dengan Parkir Darigambardiatasmenunjukanbahwakendaraan_idpadatabelparkir

Darigambardiatasmenunjukanbahwakendaraan_idpadatabelparkir ialah idpada tabel kendaraan sehingga dapat dikatakan bahwa relasi antarakeduatabelialah:

kendaraanmemilikisatu/banyakparkir,atauparkirdimiliki

kendaraan

Dalambahasainggis

kendaraanhasmanyparkir,orparkirbelongstokendaraan

Sehingga kita harus definisikan pada Model Kendaraan bahwa ia memilikibanyakParkirdenganmengikutilangkahberikut:

1. BukaKendaraan.php!

2. Tambahkanfungsirelasiparkir()sepertikodeberikut:

public function parkir()

{

return $this->hasMany(Parkir::class, 'kendaraan_id',

'id');

}

Kemudian, kita juga harus definisikan pada Model Parkir bahwa ia dimilikiolehKendaraan,denganmengikutilangkahberikut:

1. BukaParkir.php

2. Tambahkanfungsirelasikendaraan()sepertikodeberikut:

public function kendaraan()

{

return 'kendaraan_id', 'id');

$this->belongsTo(Kendaraan::class,

}

f. Relasi User dengan Parkir

f . Relasi User dengan Parkir Dari gambardi atas menunjukan bahwa petugas_id pada tabel parkir

Dari gambardi atas menunjukan bahwa petugas_id pada tabel parkir ialahidpadatabeluserssehinggadapatdikatakanbahwarelasiantara keduatabelialah:

usersmemilikisatu/banyakparkir,atauparkirdimilikiusers

Dalambahasainggis

usershasmanyparkir,orparkirbelongstousers

Sehingga kita harus definisikan pada Model User bahwa ia memiliki banyakParkirdenganmengikutilangkahberikut:

1. BukaUser.php!

2. Tambahkanfungsirelasiparkir()sepertikodeberikut:

public function parkir()

{

'id');

return

$this->hasMany(Parkir::class,

}

'petugas_id',

Kemudian, kita juga harus definisikan pada Model Parkir bahwa ia dimilikiolehUser(Petugas),denganmengikutilangkahberikut:

2. Tambahkanfungsirelasipetugas()sepertikodeberikut:

public function petugas()

{

'id');

return

$this->belongsTo(User::class,

}

'petugas_id',

Ch 4 Form Builder

4.1. Membuat Form

Setelah Anda konfigurasi, maka Anda dapat membuat form dengan menggunakanperintahberikutpadaCMD:

php artisan make:form NAMA_FORM

a. Form Data User

FormUserdigunakanuntukkeperluaninputdatauser.Forminidapat dibuat dengan menggunakan perintah artisan pada CMD seperti berikut:

php artisan make:form UserForm

Ketika perintah di atas dijalankan maka akan menghasilkan file pada app/UserForm.phpdengancodesebagaiberikut:

<?php

namespace App;

use Kris\LaravelFormBuilder\Form;

class UserForm extends Form

{

 

public function buildForm()

{

}

}

Karenaforminiakanmenggunakandatakelurahandandatakecamatan

yangdapatdarisamarindaAPI,makaperluuntukmeng-importGuzzle.

Lakukanimportterhadappaketguzzlesehinggamenjadisepertiini:

<?php

namespace App;

use Kris\LaravelFormBuilder\Form; use GuzzleHttp\Client; use GuzzleHttp\Exception\ClientException;

class UserForm extends Form

{

 

public function buildForm()

{

}

// Method selanjutnya letakan dibawah

}

Langkahselanjutnyaialahtambahkanmethodclient():

public function getClient()

{

return new Client([ 'headers' => [

'Content-Type' => 'application/json', 'Accept' => 'application/json',

'Authorization'

=>

'Bearer

env('SAMARINDA_TOKEN'),

}

]);

],

'

.

SelanjutnyatambahkanmethodgetKelurahan()sepertiberikut:

public function getKelurahan()

{

$kelurahan = []; try { $response $this->getClient()->get(env('API_KELURAHAN')); $data = json_decode($response->getBody()); foreach($data as $item) { $kelurahan[$item->nama] = $item->nama;

}

return $kelurahan;

=

}

catch(ClientException $e) { echo 'Periksa Koneksi atau token'; throw $e;

}

}

Langkah selanjutnya ialah tambahkan Method getKecamatan() sepertiberikut:

public function getKecamatan()

{

$kecamatan = []; try { $response $this->getClient()->get(env('API_KECAMATAN')); $data = json_decode($response->getBody()); foreach($data as $item) { $kecamatan[$item->nama] = $item->nama;

}

return $kecamatan;

=

}

catch(ClientException $e) { echo 'periksa koneksi atau token'; throw $e;

}

}

Dan langkah terakhir ialah UBAH method buildForm() menjadi sepertiberikut

public function buildForm()

{

$this ->add("username", 'text') ->add("password", 'password') ->add("level") ->add("kecamatan", 'select', [ 'choices' => $this->getKecamatan(),

]) ->add("kelurahan", 'select', [ 'choices' => $this->getKelurahan(),

]) ->add('alamat') ->add('Simpan', 'submit')

}

;

Jika semua langkah telah dikerjakan, maka UserForm telah siap dan dapatdigunakanpadatutorialselanjutnya.

b. Form Login

Form Login digunakan untuk keperluan login user. Form ini dapat dibuat dengan menggunakan perintah artisan pada CMD seperti berikut:

php artisan make:form LoginForm

Ketika perintah di atas dijalankan maka akan menghasilkan file pada app/LoginForm.phpdengancodesebagaiberikut:

<?php

namespace App;

use Kris\LaravelFormBuilder\Form;

class LoginForm extends Form

{

public function buildForm()

{

}

}

Selanjutnya, UBAH fungsi buildForm() pada fungsi di atas sehingga terlihatsepertiberikut:

public function buildForm()

{

$this ->add("username", 'text') ->add("password", 'password') ->add("Login", "submit")

}

;

Formloginsiapdigunakanuntukpembahasanselanjutnya.

c. Form Data Kios

Forminidigunakanuntukkeperluaninputdanubahdatakios.Formini

dapatdibuatdenganmenggunakanperintahartisanpadaCMDseperti

berikut:

php artisan make:form KiosForm

Ketika perintah di atas dijalankan maka akan menghasilkan file pada app/KiosForm.phpdengancodesebagaiberikut:

<?php

namespace App;

use Kris\LaravelFormBuilder\Form;

class KiosForm extends Form

{

public function buildForm()

{

}

}

Selanjutnya,TAMBAHKANfungsigetPenyewa()dengankodesepertidi

bawahini:

public function getPenyewa()

{

return User::pluck("username", "id")->toArray();

}

Selanjutnya, UBAH fungsi buildForm() pada fungsi di atas sehingga terlihatsepertiberikut:

public function buildForm()

{

 

$this ->add('lokasi') ->add('penyewa', 'choice', [ 'choices' => $this->getPenyewa()

])

->add('harga')

;

}

Sehingga,kodeakhirdariKiosFormialahsebagaiberikut:

<?php

namespace App;

use Kris\LaravelFormBuilder\Form;

class KiosForm extends Form

{

public function buildForm()

{

$this ->add('lokasi') ->add('penyewa', 'choice', [ 'choices' => $this->getPenyewa()

])

->add('harga') ->add("Simpan", "submit")

}

;

public function getPenyewa()

{

return User::pluck("username", "id")->toArray();

}

}

Form kios siap digunakan dan penggunaannya akan dibahas pada pembahasanselanjutnya.

d. Form Tambah Deposit Kios

Forminidigunakanuntukkeperluanmenambahdepositkios.Formini

dapatdibuatdenganmenggunakanperintahartisanpadaCMDseperti

berikut:

php artisan make:form TambahDepositKiosForm

Ketika perintah di atas dijalankan maka akan menghasilkan file pada app/KiosForm.phpdengancodesebagaiberikut:

<?php

namespace App;

use Kris\LaravelFormBuilder\Form;

class TambahDepositKiosForm extends Form

{

public function buildForm()

{

}

}

Selanjutnya,UBAHfungsikodediatassehinggasepertidibawahini:

<?php

namespace App;

use Kris\LaravelFormBuilder\Form;

class TambahDepositKiosForm extends Form

{

public function buildForm()

{

$this->add('nominal')->add("Tambah", "submit");

}

}

Form kios siap digunakan dan penggunaannya akan dibahas pada pembahasanselanjutnya.

e. Form Data Tagihan

Forminidigunakanuntukkeperluanmenambahdepositkios.Formini

dapatdibuatdenganmenggunakanperintahartisanpadaCMDseperti

berikut:

php artisan make:form TambahDepositKiosForm

Ketika perintah di atas dijalankan maka akan menghasilkan file pada app/KiosForm.phpdengancodesebagaiberikut:

<?php

namespace App;

use Kris\LaravelFormBuilder\Form;

class TambahDepositKiosForm extends Form

{

 

public function buildForm()

{

}

}

Selanjutnya,UBAHfungsikodediatassehinggasepertidibawahini:

<?php

namespace App;

use Kris\LaravelFormBuilder\Form;

class TagihanForm extends Form

{

public function buildForm()

{

$this ->add('bulan', 'select', [

array_combine(range(1,12),

range(1,12))

]) ->add('tahun', 'select', [ 'choices' => array_combine(range(date('Y')-10, date('Y')), range(date('Y')-10, date('Y'))) ]) ->add('status', 'select', [ 'choices' => [ 'Lunas' => 'Lunas', 'Tunggak' => 'Tunggak', 'Belum' => 'Belum'

'choices'

=>

]

]) ->add("Tambah", "submit")

}

;

}

Form tagihan siap digunakan dan penggunaannya akan dibahas pada pembahasanselanjutnya.

f. Form Data Produk

g. Form Data Kendaraan

h. Form Tambah Deposit Kendaraan

i. Form Data Parkir

Ch 5 Controller

Pada tutorial sebelumnya, kita menulis kode-kode yang berisi logika pada routes/web.php dan berhasil. Namun, penulisan pada web.php tidaklah direkomendasikan karena ketika aplikasi kita berkembang, makaakanterlalubanyakkode,kodetersebuttidakterorganisirdengan baik,selainitukodeyangadatidakdapatdigunakankembali.Sehingga untuk mengatasi hal tersebut suatu kode di organisasi dalam bentuk controller.

5.1. Membuat Controller

Untukdenganmudahmembuatcontrollerdapatmenggunakanperintah

artisanpadaCMDsebagaiberikut:

php artisan make:controller NAMACONTROLLER

MisalkanmembuatcontrolleruntukuserdengannamaUserController

ialahsebagaiberikut:

php artisan make:controller UserController

Perintah

app/Http/Controller/UserController.phpdengankodesebagaiberikut:

diatas

akan

menghasilkan

file

pada

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller

{

}

5.2.

Studi Kasus Menampilkan User

1. Pada UserController.php tambahkan 1 UserControllermenjadi:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

fungsi, sehingga

class UserController extends Controller

{

 

function tampilUser()

{

$users = \App\User::all();

$user1->fill([

'username' => time(), 'password' => time() + time(), 'level' => 'member', ])->save();

}

}

2. Padatampilanpadaresources/views/tampil-user.blade.php

<table border="1"> <tr>

<th>No</th> <th>Username</th> <th>Level</th> <th>Opsi</th> </tr> @foreach($users as $no=>$user) <tr>

<td>{{ $no+1}}</td> <td>{{ $user->username }}</td> <td>{{ $user->level}}</td> <td></td> </tr> @endforeach </table>

3. Padaroutes/web.phptambahkanalamatberikut:

Route::get('/tampil-user','UserController@tampilUser');

4. Jalankan perintah “php artisan serve” dan buka alamat:

6.1. Tabel User

a. Insert User

Ch 6 Basic CRUD

1. PadaUserController.phptambahkan2fungsiberikut:

function formUser()

{

$form = $this->form(\App\UserForm::class, [ 'method' => 'post', 'url' => '/simpan-user'

]);

$data = [ 'form' => $form

];

return view("form-user", $data);

}

function simpanUser(Request $request)

{

$user = new \App\User(); $user->fill($request->all())->save();

return redirect('/tampil-user');

}

2. Buatfileform-user.blade.phppadafolderresources/views:

{!! form($form) !!}

3. Padaroutes/web.phptambahkan2alamatberikut:

Route::get('/form-user', 'UserController@formUser'); Route::post('/simpan-user', 'UserController@simpanUser');

4.

Kemudianlakukanpercobaandiwebbrowser!(janganlupajalankan

“phpartisanserve”padaCMD)

b. Edit User

1. PadaUserControllertambahkan2buahfungsiberikut:

function formEditUser($id)

{

$user = \App\User::find($id); $form = $this->form(\App\UserForm::class, [ 'method' => 'post', 'url' => '/update-user/' . $id, 'model' => $user

]);

$data = [ 'form' => $form

];

return view("form-user", $data);

}

function updateUser($id, Request $request)

{

$user = \App\User::find($id); $user->fill($request->all())->save();

return redirect('/tampil-user');

}

2. Padaroutes/web.phptambahkanduabuahalamatberikut:

Route::get('/edit-user/{id}', 'UserController@formEditUser'); Route::post('/update-user/{id}', 'UserController@updateUser');

3. Pada resources/views/tampil-user.blade.php ubah kode sehingga

setiapuserterdapatlinkeditsebagaiberikut:

<table border="1"> <tr>

<th>No</th>

<th>Username</th> <th>Level</th> <th>Opsi</th> </tr> @foreach($users as $no=>$user) <tr>

<td>{{ $no+1}}</td> <td>{{ $user->username }}</td> <td>{{ $user->level}}</td> <td>

<a href='/edit-user/{{ $user->id}}'>Edit</a> </td> </tr> @endforeach </table>

4. Lakukan ujicoba pada halaman web browser dengan membuka

halaman daftar user. Contoh: http://127.0.0.1:8000/tampil-user

lakukaneditdata!Jikaberhasilmakadatabisadieditdandisimpan

c.

Delete

1. PadaUserControllertambahkanfungsiberikut:

function deleteUser($id)

{

$user = \App\User::find($id); $user->delete(); return redirect('/tampil-user');

}

2. Padaroutes/web.phptambahkanalamatberikut:

Route::get('/delete-user/{id}', 'UserController@deleteUser');

3. Pada tampil-user.blade.php ubah kode sehingga menampilkan link

delete:

<table border="1"> <tr>

<th>No</th>

<th>Username</th>

<th>Level</th>

<th>Opsi</th>

</tr> @foreach($users as $no=>$user) <tr>

<td>{{ $no+1}}</td> <td>{{ $user->username }}</td> <td>{{ $user->level}}</td> <td>

<a href='/edit-user/{{ $user->id }}'>Edit</a> <br> <a href='/delete-user/{{ $user->id }}'>Hapus</a> </td> </tr> @endforeach </table>

4. Lakukan ujicoba pada halaman web browser dengan membuka halaman daftar user. Contoh: http://127.0.0.1:8000/tampil-user lakukanhapusdata!Jikaberhasilmakadataakanhilang!

Ch 7 Otentikasi dan Otorisasi

Otentikasiialahprosesuntukmengecekkredensialdariuser.Prosesini umumnyadilakukandenganmengirimkanusernamedanpasswordvia form login, kemudian dicek data tersebut pada tabel pada database. Sedangkan otorisasi ialah proses untuk mengecek apakah suatu halaman/alamat url dapat diakses oleh user, misalnya halaman edit, atau delete hanya dapat diakses oleh admin, atau seperti status facebookhanyadapatdihapusolehyangpunya.

7.1.

Otentikasi

Otentikasi ialah suatu proses untuk memverifikasi apakah suatu penggunayangakanmengaksessuatuhalaman/resourcesmemilikihak untuk mengaksesnya. Pada framework laravel telah menyediakan perangkatuntukkebutuhanini.Sepertipadatutorialsebelumnyatelah dijelaskanbahwalaravelsecaradefaultmemilikimodelUseryangsalah satufungsinyaialahsebagaiwadahuntukmenyimpaninformasiuser.

PadatutorialsebelumnyaAndatelahmelakukanmanagementerhadap tabel user melalui model User yang meliputi insert data, edit data, menampilkan data dan menghapus data. Pada tutorial ini kita akan memanfaatkan model User dan data-data tersebut untuk proses otentikasi.

a. Proses Otentikasi (Login)

Untuk proses otentikasi memerlukan form login dan pengecekan terhadapusernamedanpasswordyangdikirim.Detailprosesotentikasi ialahsebagaiberikut:

Langkah 1. BuatkelasLoginFormdenganmenggunakanperintahCMD berikut:

php artisan make:form LoginForm

Perintah di atas akan menghasilkan file dengan nama LoginForm.php dengankodeawalsebagaiberikut:

<?php

namespace App;

use Kris\LaravelFormBuilder\Form;

class LoginForm extends Form

{

public function buildForm()

{

// Add fields here

}

}

Ubahkodediatasdenganmenambahkaninputanuntukusernamedan

passwordsertatombollogin,sehinggakodeakhirsebagaiberikut:

<?php

namespace App;

use Kris\LaravelFormBuilder\Form;

class LoginForm extends Form

{

public function buildForm()

{

$this ->add("username", 'text') ->add("password", 'password') ->add("Login", "submit")

;

}

}

Langkah 2. BuatControllerdengannamaSecurityController

php artisan make:controller SecurityController

Perintah diatas

SecurityController.php,dengankodeawalsebagaiberikut:

akan membuat

suatu

file

dengan nama

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class SecurityController extends Controller

{

}

//

Ubah kode diatas dengan melakukan import terhadap beberapa class yangakandigunakankemudian,yakni

use Illuminate\Http\Request; use Kris\LaravelFormBuilder\FormBuilder; use App\LoginForm; use App\User; use Illuminate\Support\Facades\Auth;

SehinggakodeControllermenjadiseperiberikut:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request; use Kris\LaravelFormBuilder\FormBuilder;

use App\LoginForm; use App\User; use Illuminate\Support\Facades\Auth;

class SecurityController extends Controller

{

}

//

Langkah 3. Buatfungsiuntukmenampilkanformlogin

Pada SecurityController.php tambahkan fungsi untuk menggunakan kelasLoginFormdengancodesebagaiberikut:

public function login(FormBuilder $formBuilder)

{

 

$form = $formBuilder->create(LoginForm::class, [ 'method' => 'POST', 'url' => '/login'

]);

$data = [ 'form' => $form

];

return view('login', $data);

}

Langkah 4. BuatViewuntukformlogin.

Padaresources/viewsbuatfiledengannamalogin.blade.phpdengan

kodesebagaiberikut:

<h3>User Login</h3> <hr> {!! form($form) !!}

Langkah 5. Buatfungsiuntukmemproseslogin

PadaSecurityControllertambahkanfungsiberikut:

public function prosesLogin(Request $request)

{

$user

=

$request->get('username'))

->where('password',

User::where('username',

$request->get('password'))->first();

if($user == null) { return back()->withMessage("Invalid Username and

Password");

}

Auth::login($user);

return redirect()->withMessage("Welcome to the system");

}

Langkah 6. Buatroutepadaweb.phpuntukkeduafungsipadalangkah

1danlangkah2

Padaroutes/web.phptambahkanRouteberikut:

Route::get('/login', 'SecurityController@login')->name('login'); Route::post('/login', 'SecurityController@prosesLogin');

Langkah 7. Lakukanpercobaandenganmengakseshalamanloginpada

http://127.0.0.1:8000/login,kemudiancobalakukanpercobaandengan

memasukanusernamedanpasswordyangtelahdiinputkansebelumnya.

Jikaberhasilmakaakanmenampilkanhalamandepan.Sebaliknyajika

gagalakanmenampilkanformloginkembali.

b. Logout

Setelah user selesai menggunakan aplikasi biasanya ia akan logout. Untukmembuatlogoutikutilangkahberikut:

Langkah 1. Tambahfungsilogout()padaSecurityController

EditSecurityController.phpdantambahkanmethodberikut:

public function logout()

{

Auth::logout(); return redirect('/')->withMessage("Goodbye!");

}

Langkah 2. TambahkanRoutepadaroutes/web.php

Editroutes/web.phpdantambahkankodeberikut:

Route::get('/logout', 'SecurityController@logout');

Langkah 3. Lakukanujicoba

7.2.

Otorisasi

Otorisasi ialah suatu proses pengenalan terhadap user yang ingin mengakses suatu resources. Misalkan kita ingin membatasi pengguna yang ingin mengakses halaman http://127.0.0.1:8000/tampil-user hanyakepadapenggunayangtelahlogin.Pembatasanterhadapsuatu resources pada laravel dapat menggunakan middleware yang penggunaannyadiletakanpadaroutes/web.php.

a. Penggunaan Middleware

Penggunaanmiddlewareuntukmembatasi/otorisasiterhadapsuatuurl

sangatlahmudah.Ikutilangkah-langkahberikut:

1. Bukaroutes/web.phpcari urlyangmengarahkepada‘tampil-user’ misalkanAndamendapatkan:

Route::get('/tampil-user', 'UserController@tampilUser');

Ubahkodediatasmenjadi

Route::get('/tampil-user', 'UserController@tampilUser') ->middleware(['auth']);

2. Lakukan percobaan dengan mengakses halaman tampil-user

(http://127.0.0.1:8000/tampil-user)sebelumdansetelahlogin

a) Jika belum login, maka akan diarahkan kehalaman login terlebihdahulu

b) Jikatelahlogin,makaakanmenampilkanhalamantersebut

Padacontohdiataskitatelahmenggunakan auth sebagaimiddleware untukmembatasisuatuURLhanyadapatdiaksesolehuseryangtelah login.

b. Membuat Middleware

Middlewareauthsepertiyangtelahdigunakandiatasdapatdigunakan untuk otorisasi dengan mengijinkan user yang telah login untuk mengakses suatu URL. Namun, kadang kita ingin membagi lagi kewenangan,misalkanterdapatuserbiasadanadmin,dimanaadmin dapat melakukan semua hal, sedangkan user biasa “hanya” dapat melakukanbeberapahalsaja.Untukhalitumakakitaakanmembuat suatumiddlewareyangdigunakanuntukpembatasan/otorisasispesifik untukadminyangdapatkitanamakansebagaiAdminMiddleware.

Untuk membuat middleware dapat menggunakan perintah artisan sepertiberikut:

php artisan make:middleware NamaMiddleware

Setelahmiddleware dibuat, langkahselanjutnya ialah meregistrasikan middlewaretersebutpadaapp\Http\Kernel.phpdenganmenambahkan padavariabel$routeMiddlewaresepertiberikut:

protected $routeMiddleware = [ 'admin' => \App\Http\Middleware\AdminMiddleware::class, 'auth' => \App\Http\Middleware\Authenticate::class,

'auth.basic'

=>

\Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,

'bindings'

=>

\Illuminate\Routing\Middleware\SubstituteBindings::class,

'cache.headers'

=>

\Illuminate\Http\Middleware\SetCacheHeaders::class,

'can' => \Illuminate\Auth\Middleware\Authorize::class,

'guest'

=>

\App\Http\Middleware\RedirectIfAuthenticated::class,

'signed'

=>

\Illuminate\Routing\Middleware\ValidateSignature::class,

'throttle'

=>

\Illuminate\Routing\Middleware\ThrottleRequests::class,

'verified'

=>

\Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,

];

Berikut ialah langkah-langkah untuk membuat dan menggunakan middlewareadmin

1. Buatmiddlewareadmindenganmenggunakanperintahartisan

php artisan make:middleware AdminMiddleware

PerintahdiatasakanmenghasilkankodeclassAdminMiddlewarepada app\Http\Middleware\AdminMiddleware.php dengan sumber kode sepertiberikut:

<?php

namespace App\Http\Middleware;

use Closure;

class AdminMiddleware

{

/**

* Handle an incoming request.

*

* @param \Illuminate\Http\Request $request

* @param \Closure $next

* @return mixed

*/ public function handle($request, Closure $next)

{

return $next($request);

}

Ubahkodediatassehinggaterlihatsepertidibawahini:

<?php

namespace App\Http\Middleware;

use Closure; use Illuminate\Support\Facades\Auth;

class AdminMiddleware

{

/**

* Handle an incoming request.

*

* @param \Illuminate\Http\Request $request

* @param \Closure $next * @return mixed */ public function handle($request, Closure $next)

{

if (Auth::check()) { $user = Auth::user();

if($user == null) return 'Please login first');

redirect("/login")->with("message",

if ("admin" != $user->level) abort(403, 'Unauthorized action.');

}

return $next($request);

}

2. Registrasikanpadaapp\Http\Kernel.php

Bukaapp\Http\Kernel.php

3. Contohpenggunaanpadaroutes\web.php

4. Ujicoba

Ch 8 Templating

8.1. Instalasi Bootstrap dan JQuery

1. Downloadbootstrappadaalamatberikut

rap-4.3.1-dist.zip

dansimpanpadafolderpublic

2. Extractsehinggaterdapatfolderdengannamabootstrap-4.3.1-dist

3. Renamefoldermenjadibootstrap

4. DownloadJquerypadaalamatberikut

dansimpanpadafolderpublic

8.2. Buat Template Utama

1. Pada folder resources/view buat file namanya base.blade.php

kemudiantuliscodeberikut:

<!DOCTYPE html> <html lang="en"> <head>

<meta charset="UTF-8">

<meta

name="viewport"

initial-scale=1.0">

content="width=device-width,

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<link

rel="stylesheet"

href="/bootstrap/css/bootstrap.min.css">

<title>Document</title>

</head>

<body>

<div class="container">

@yield("content")

</div>

<script src="/jquery-3.4.1.min.js"></script> <script src="/bootstrap/js/bootstrap.min.js"></script> </body> </html>

8.3. Uji Coba

a. Form user

1. Bukaform-user.blade.php(resources/views/form-user.blade.php)

2. Kemudian,editmenjadisepertiberikut:

@extends('base')

@section('content') <h3>Form User</h3> <hr> {!! form($form) !!}

@endsection

3. Setelah itu lihat perubahan pada tampilan dengan membuka

4. Jikaberhasil,makatampilannyamenjadisepertidibawahini:

b . Tampil User 1. Bukatampil-user.blade.php 2. Editsehinggamenjadisepertidibawahini: @extends('base')

b. Tampil User

1. Bukatampil-user.blade.php

2. Editsehinggamenjadisepertidibawahini:

@extends('base')

@section("content")

<h3>Data User</h3>

<hr>

<table class="table table-bordered"> <tr>

<th>No</th> <th>Username</th> <th>Level</th> <th>Opsi</th> </tr> @foreach($users as $no=>$user) <tr>

<td>{{ $no+1}}</td> <td>{{ $user->username }}</td> <td>{{ $user->level}}</td> <td>

<a

class="btn

btn-warning"

href='/edit-user/{{ $user->id}}'>Edit</a> <br>

href='/edit-user/{{ $user->id}}'>Edit</a> <br>

href='/edit-user/{{ $user->id}}'>Edit</a> <br>

<a

class='btn

btn-danger'

href='/delete-user/{{ $user->id}}'>Hapus</a>

</td>

</tr>

@endforeach

</table>

@endsection

3. Kemudian coba akses tampil user, jika berhasil maka tampilannya sepertiberikut:

Ch 9 Relationship