Modul Laravel Bootstrap
Modul Laravel Bootstrap
DAFTAR ISI
MODUL V CONTROLLER...................................................................................................... 34
MODUL I
MENGENAL DAN INSTALASI LARAVEL
(PERTEMUAN 1)
Tujuan :
Laravel merupakan salah satu dari sekian banyak framework PHP yang dapat digunakan secara
gratis. Laravel dikembangkan oleh programmer asal amerika yang bernama Taylor Otwell pada tahun
2011. Framework sendiri dapat diartikan sebagai kumpulan kode-kode program yang akan selalu
digunakan pada setiap pembuatan aplikasi. Karena selalu digunakan maka kode-kode tersebut
dikumpulkan dan disusun secara rapi pada folder-folder agar mudah digunakan dan jadilah sebuah
framework.
1. TEXT EDITOR
Text editor menjadi kebutuhan wajib yang harus dimiliki untuk menulis suatu program. Beberapa
text editr yang biasa digunakan oleh para programmer di antaranya Notepad++, Sublime Text,
ATOM dan sebagainya, namun pada modul ini akan menggunakan text editor Sublime Text.
2. WEB SERVER
Web server sebagai penyedia layanan web pada komputer lokal. Laravel mendukung web server
Apache maupun Ngix. Pada modul ini akan menggunakan web server XAMPP yang didalamnya
menggunakan server Apache. Paket aplikasi ini dapat diunduh dari website apachefriends.org.
adapun versi yang digunakan pada modul ini adalah versi 3.2.2 yang telah mendukung PHP
dengan versi 5.6.30 untuk menjalankan laravel versi 5.4.
3. COMPOSER
Composer digunakan untuk memudahkan instalasi Laravel dan mendapatkan library yang
dibutuhkan dari internet. Jadi sebelum melakukan instalasi Laravel, komputer atau laptop atau
mesin yang digunakan harus sudah terinstal Composer. Aplikasi ini dapat diunduh dari website
getcomposer.org.
KEGIATAN PRAKTIKUM INSTALASI LARAVEL
Pada dasarnya ada dua cara untuk melakukan instalasi projek laravel, yaitu menggunakan laravel
installer atau menggunakan via composer create project. Namun cara kedua yang paling umum
digunakan. Sebelum memulai melakukan instalasi projek Laravel alangkah baiknya kita memeriksa
terlebih dahulu apakah mesin atau komputer yang kita gunakan sudah terinstal composer atau belum
dengan cara membuka comand prompt atau cmd dan mengetikan composer dan menekan enter. Jika
muncul tulisan composer seperti pada gambar dibawah maka composer sudah terinstal.
a.
3. Cek versi php. Pada tombol “browse”, kemudian masukkan path php yang sudah diinstal di
komputer. disini dicontohkan path php yaitu “C:/xampp/php.exe” kemudian klik next
4. Ikuti proses instalasi, jika sudah berhasil menginstal composer, untuk mengecek composer sudah
berjalan dengan baik lakukan kembali langkah sebelumnya yaitu masuk ke comand prompt lalu
ketikan composer dan kemudian tekan enter.
Untuk memulai menginstal Laravel silahkan masuk ke dalam cmd atau comand prompt (cmd)
pada Windows atau terminal pada Linux. Lalu arahkan ke dalam folder htdocs pada xamp. Selanjutnya
ketikan script berikut pada cmd atau terminal:
Kata penjualan yang ada pada script dapat akan menjadi nama folder sekaligus nama projek laravel
nantinya. Proses instalasi laravel dapat dilihat pada gambar dibawah.
Jika proses instalasi sudah selesai maka pada folder htdocs yang ada pada XAMPP akan ada satu
folder baru yang bernama penjualan atau nama projek yang ditulis pada saat menjalankan script composer
create project, folder tersebut merupakan hasil dari script istalasi laravel. Untuk menjalan projek laravel
tersebut terdapat dua cara yaitu menggunakan server dari laravel sendiri atau menggunakan server dari
xampp. Untuk menjalankan projek laravel dari server XAMPP harus menuliskan alamat seperti berikut
localhost/nama_projek/public/ pada link browser yang digunakan. Namun sebelum menjalankannya
pastikan terlebih dahulu xampp sudah dalan keadaan aktif dan apache dan mysql sudah running. untuk
contoh dari projek laravel yang telah dibuat bisa dilihat pada gambar dibawah.
Atau untuk menjalankan projek laravel bisa menggunakan server dari laravel itu sendiri yang
bernama server artisan yang bisa dijalankan melalui cmd atau terminal. Untuk menjalankan server
artisan pastikan cmd atau terminal sudah berada di dalam folder projek laravel yang telah dibuat, setelah
itu untuk menjalankan server dari laravel ketikan script “php artisan serve” pada cmd atau terminal
seperti pada gambar dibawah.
Pada gambar comand prompt diatas terdapat satu baru yang bertuliskan cd penjualan, sintak ini adalah
untuk membuat comaand prompt masuk ke dalam satu folder yaitu folder penjualan. Setelah menuliskan
sintak php artisan serve maka projek laravel bisa diakses dengan mengetikan “localhost:8000’ pada link
browser yang digunakan seperti gambar 1.3 dibawah:
Pada folder hasil instal Laravel terdapat beberapa folder yang penting untuk kita ketahui. Struktur
folder tersebut dapat dilihat pada gambar 1.3 dibawah.
Pada gambar diatas tampak 10 folder yang ada di dalam projek laravel yang telah dibuat. Fungsi
folder-folder tersebut yaitu sebabagi berikut:
1. Folder app merupakan folder yang paling banyak mendapatkan perhatian karena hampir semua
script aplikasi yang kita buat ditaruh pada folder ini. Di dalam folder ini berisi banyak folder yang
akan dibahas pada modul-modul selanjutnya.
2. Folder bootstrap merupakan folder yang berisi file app.php yang mengendalikan framework
Laravel dan file autoload.php yang mengkonfigurasikan autoloading. Folder ini juga berisi folder
cache yang berisi file-file cache untuk meningkatkan kecepatan aplikasi.
3. Folder config merupakan folder yang berisi file-file konfigurasi aplikasi. Sebaiknya kita
memahami setiap file yang ada di dalam folder ini beserta pengaturan-pengaturan yang harus
diberikan di dalamnya.
4. Folder database merupakan folder yang berisi database migration dan seeds. Migration dan seeds
akan dibahas pada modul akan dibahas pada modul-modul selanjutnya.
5. Folder public folder public merupakan folder yang berisi file index.php yang merupakan file
utama sebagai pintu masuk semua request atau permintaan pada aplikasi yang dibangun. Folder
ini juga tempat menyimpan semua aset aplikasi seperti gambar dan file javascript atau css
external.
6. Folder resources merupakan folder yang berisi file-file aset yang berlum dikompilasi seperti file
LESS, SASS atau javascript. Folder ini juga sebagai tempat semua file bahasa.
7. Folder routes merupakan folder yang berisi semua route yang kita definisikan pada aplikasi.
Untuk materi route akan dibahas lebih detail pada modul selanjutnya.
8. Folder storage merupakan folder yang berisi file file yang dibuat oleh framework. Folder ini
berisi tiga folder di dalamnya, yaitu app, freamework dan logs. Folder app digunakan untuk
menyimpan file yang dibuat oleh aplikasi, folder framework digunakan untuk menyimpan file
yang dibuat oleh framework. Sedangkan folder logs digunakan untuk menyimpan file logs.
9. Folder tests merupakan folder-folder yang berisi file-file pengetesan.
10. Folder vendor merupakan folder yang berisi file-file dependency yang diperoleh dari composer.
Seperti telah dijelaskan sebelumnya, ketika membuat suatu aplikasi menggunakan Laravel, maka
kita akan banyak bekerja pada folder app. Untuk itu kita perlu memahami lebih detail isi dari folder app.
Secara default folder ini hanya berisi empat folder seperti yang terlihat pada gambar 1.4 diatas.
Sebenarnya ada beberapa folder lagi yang terdapat dalam folder app, namun folder-folder tersebut tidak
tampil secara default. Folder tersebut akan ada ketika kita menjalankan perintah artisan make. Mengenai
perintah-perintah atisan akan dibahas pada modul-modul selanjutnya.
Pada gambar 1.4 terlihat 4 folder. Fungsi dari folder-folder tersebut yaitu sebagai berikut:
1. Folder Console merupakan folder yang berisi perintah artisan custom untuk aplikasi yang akan
dibuat.
2. Folder Exception merupakan folder yang berisi exception handler dari aplikasi yang kita buat.
3. Folder Http merupakan folder yang berisi controller, middleware dan form request.
4. Folder Providers merupakan folder yang berisi semua service providers untuk aplikasi yang akan
dibuat.
Selain empat folder diatas, sebenarnya ada beberapa folder lagi yang hanya ada jika kita menjalankan
perintah artisan yang ada pada tanda kurng, yaitu, Event (make:event), Jobs (make:job), Listeners
(make:listener), Mail (make:mail), notifications (make:notification) dan policies (make:policy).
TUGAS PRAKTIKUM
1. Lakukan proses instalasi framework
2. Buatlah projek pertama laravel dan tampilkan dalam browser
MODUL II
FITUR PADA LARAVEL
(PERTEMUAN 2)
Tujuan :
DASAR TEORI
Artisan merupakan comand-line interface atau perintah-perintah yang diketikan pada command
prompt untuk melakukan tugas tertentu saat proses pembuatan suatu apliasi pada Laravel. Adapun cara
untuk menggunakan perintah artisan adalah masuk ke dalam command prompt atau cmd pada windows
atau terminal pada linux, lalu arahkan ke dalam folder projek laravel yang telah dibuat. Selanjutnya kita
dapat mengetikan perintah-perintah artisan.
ARTISAN
Untuk melihat perintah-perintah artisan yang dapat digunakan, kita dapat mengetikan perintah
php artisan list pada cmd atau command promt, maka akan muncul list dari perintah-perintah
artisan yang disediakan oleh laravel seperti pada gambar dibawah:
Pada gambar di atas dapat dilihat sebagian perintah dari perintah-perintah yang disediakan oleh
artisan berikut dengan penjelasnya. Kita dapat menampilkan penjelasan yang lebih detail dari sebuah
perintah artisan dengan mengetikan perintah dalam format php artisan help (nama perintah) yang pada
contohnya nyatanya untuk melihat penjelasan dari perintah migrate yang ada pada perintah artisan , maka
perintahnya adalah php artisan help migrate.
Migration dapat dikatan sebagai versi control untuk skema database pada sebuah aplikasi. Dengan
bantuan migration, skema database dapat diperbaharui sehingga tetap up to date. Migration juga
memungkinkan kita tidak perlu membuka database client seperti PHPMyadmin untuk mengubah struktur
database. Cukup mengubah kode pada migation lalu menjalankan perintah artisan, maka skema database
akan secara otomatis akan berubah. Kelebihan lain dari fitur ini adalah ketika ingi pindah database,
misalnya dari Mysql ke Sqllite, kita tidak perlu membuat struktur database dari awal namun hanya perlu
mengubah konfigurasi database Laravel, lalu menjalan perintah artisan migration.
Untuk dapat mempraktekan fitur migration pada Laravel, terlebih dahulu kita harus membuat
sebuah database melalui PHPMyAdmin misalnya dalam contoh ini database yang bernama “penjualan”.
Selanjutnya ubah konfigurasi database dalam projek laravel pada file .env yang berada pada folder
penjualan/.env menjadi seperti berikut:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=penjualan
DB_USERNAME=root
DB_PASSWORD=
MEMBUAT TABEL
Untuk membuat migration, kita menggunakan artisan, jadi silahkan buka comand prompt dan
arahkan ke folder Laravel yang telah diinstal yang dalam contoh pada modul ini adalah projek Laravel
dengan nama penjualan yang telah dibuat pada pertemuan sebelumnya, lalu ketikan script berikut:
Hasil dari perintah artisan tersebut adalah akan ada file migration baru denagn nama
2018_09_12_015121_create_produk_table pada folder database/migration sebagai berikut:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
Pada script diatas kita membuat tabel dengan nama produks. Untuk membuat kolom tabelnya. Kita
sebutkan dulu tipe datanya baru menuliskan nama kolomnya di dalam tanda kurung (dengan tanda petik
karena merupakan string).
Perintah increment() digunakan untuk membuat kolom yang menjadi primary key da diset auto
increments (bertambah otomatis), perintah string untuk membuat kolom dengan tipe string atau varchar,
perintah integer() untuk membuat kolom dengan tipe data integer, perintah timestamps() untuk membuat
kolom pendanda waktu yang mengasilkan dua kolom yakni created_at dan updated_at.
Sebelum menjalankan perintah migration kita harus melakukan sedikit konfigurasi pada file
database.php yang ada pada folder projek laravel yang baru dibuat atau pada folder
penjualan/config/database.php pada baris ke 53 ubahlah value strict dari true menjadi false
seperti pada script dibawah :
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
Untuk membuat tabel dari file migration diatas ketikan perintah artisan php artisan migrate pada
commad prompt, dan hasil dari perintah artisan tersebut dapat dilihat pada gambar 2.3 dibawah.
Perintah di atas akan menjalankan method run() pada file migration sehingga akan menghasilkan
tabel pada database penjualan. Untuk membuktikan hasilnya silahkan buka http://localhost/phpmyadmin/
pilih database penjualan maka hasilnya akan tampak seperti gambar dibawah.
Akan ada 4 table baru yang salah satunya adalah tabel produk yang dibuat dari file migration
yang baru saja dibuat. Untuk tabel migrations, password_reset dan users adalah tabel-tabel
default yang telah disediakan oleh laravel untuk melakukan autentikasi yang akan dijelaskan
pada bagian selanjutnya.
perintah artisan tersebut akan atau mengembalikan satu operasi atau operasi terakhir yang telah
dilakukan seperti pada contoh
Jika diperiksa pada localhost/phpmyadmin maka tabel yang baru saja dibuat menggunakan fitur
migration akan terhapus. Untuk mengembalikan tabel-tabel tersebut jalankanlah perintah artisan
php artisan migrate sekali lagi.
misalkan kita ingin mengembalikan ke 2 operasi terakhir, maka kita dapat menambahkan opsi –step
dibelakangnya atau seperti contoh:
kita juga daoat me-roll back seluruh operasi migration, yaitu dengan perintah:
atau ada kalanya kita ingin me-rollback seluruh operasi migration dan langsung menjalankan migration.
Untuk keperluan seperti itu kita dapat menjalankan perintah
MODIFIKASI TABEL
Selanjutnya ubah method up() pada migration yang baru dibuat menjadi seperti berikut:
Sekarang nama tabel produks sudah berubah menjadi barang. Bisa dilihat pada gambar dibawah.
Selain method create(), drop() dan rename(), masih ada method lain yang dapat digunakan untuk
memodifikasi tabel, antara lain dapat dilihat pada tabel 2.1 dibawah.
Model merupakan bagian dari konsep MVC pada Laravel yang fungsinya untuk berinteraksi
dengan database. Model dibuat berdasarkan nama tabel pada aplikasi yang dibangun. Misalnya
sebelumnya kita telah membuat satu tabel yang bernama barangs. Untuk membuat model untuk table
barangs kita dapat menjalankan perintah artisan dengan sciprt sebagai berikut:
hasil dari perintah di atas, akan ada satu file baru pada folder penjualan/app dengan nama barang.php.
hasil dari perintah artisan di atas dapat dilihat pada gambar dibawah.
Laravel mengamsumsikan bahwa nama dari file model yang dibuat berarti nama tabel yang ada
dalam database adalah plural dari nama model tersebut yang berarti jika nama file model disini adalah
barang maka nama tabel yang ada di dalam database adalah barangs. Namun hal tersebut dapat
dikonfigurasi dengan cara membuka file model barang.php yang baru saja dibuat dan tambahkan script
berikut:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class barang extends Model
{
protected $table = 'barangs';
}
Di dalam class model barang kita mendefinsikan satu variabel bernama table, value dari variabel
ini akan dianggap sebagai nama tabel yang diwakili oleh model ini.
SEEDER
Seeder digunakan untuk membuat contoh data pada database. Fitur ini sangat bermanfaat saat
melakukan pengembangan suatu sistem yang dimana kita memerlukan suatu contoh data. Apalagi ketika
membutuhkan contoh data yang banyak, fitur ini dapat membantu dari pada memasukan data satu persatu
scara manual melalui PhpMyAdmin.
Selanjutnya buka file produkTableSeeder yang telah dibuat dan tambahkan script pada method
run() sehingga menjadi seperti berikut:
<?php
use Illuminate\Database\Seeder;
Langkah berikutnya, buka file DatabaseSeeder.php yang ada pada folder database/seeds dan panggil
seeder yang baru dibuat pada method run dengan menambahkan script sebagai berikut:
Program Studi Sistem Komputer 16
Modul Praktikum Pemrograman Web Lanjut
?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(produkTableSeeder::class);
}
}
Sekarang kita bisa menjalankan perintah atisan pada comand prompt untuk mengeksekusi seeder yang
telah dibaut dengan perintah sebagai berikut:
Untuk melihat hasil dari seeder yang dibuat bukalah localhost/phpmyadmin pada browser lalu
pilih database penjualan dan table produks maka hasilnya akan ada 2 data baru yang dihasilkan
dari pembuatan seeder yang telah kita melakukan seperti pada gambar dibawah:
TUGAS
1. Exam
2. Exam
MODUL III
ROUTING
Tujuan :
Route::get($url,$callback);
Pada format penulisan di atas, $url diisi dengan format URL dari route, sedangkan $callback
diisi dengan script yang akan dijalankan ketika membuka URL tersebut. Callback dapat berupa
controller atau fungsi. Contoh penulisan route sederhana adalah sebagai berikut:
Route::get('/welcome', function () {
echo "Welcome";
});
Untuk menguji route diatas pertama-pertama pastikan server artisan sudah berjalan, untuk
menjalankan server artisan itu sendiri sudah dibahas pada modul sebelumnya yaitu melalui cmd
atau comand promt dengan cara mengarahkan direktori ke dalam projek laravel yang dalam
kasus ini adalah projek penjualan dan kemudian mengetikan php artisan serve.
Lalu jika kita mengetikan pada browser localhost:8000/welcome maka hasilnya akan
seperti gambar diabawah:
1. Untuk menampilkan atau mengambil data dapat menggunakan method GET. Route
dengan method ini dapat langsung kita akses melalui link pada browser. Contohnya dapat
dilihat pada latihan dibawah:
Route::get('/index', function () {
echo "Uji Coba route dengan method GET";
});
2. Untuk mengirim data dari form dengan dapat menggunakan method POST, biasasnya
digunakan untuk menambah data. Adapun penulisan dari route ini adalah sebagai berikut:
Route::post('/store', function () {
// sintak untuk menyimpan data
});
3. Untuk mengirim data dari form dengan tujuan untuk memperbaharui data dapat
menggunakan method PUT, contoh penulisan route dengan method PUT adalah sebagai
berikut:
Route::put('/update', function () {
// sintak untuk upadte data
});
4. Untuk mengirim data dari form dengen tujuan untuk menghapus data dapat menggunakan
method DELETE. Contoh dari penulisan route dengen method delete adalah sebagai
berikut:
Route::delete('/delete', function () {
// sintak untuk menghapus data
});
5. Untuk route yang dapat merespons beberapa HTTP request, kita dapat menggunakan
method match().
Route::match(['get','post'],'/welcome' function () {
//
});
6. Sedangkan untuk route yang dapat merespons semua HTTP request, dapat menggunakan
method any(). Contohnya pada script berikut:
Route::any('/welcome' function () {
//
});
Untuk contoh dari penggunakan masing-masing method route diatas akan akan dibahas pada
modul selanjutnya.
Parameter pada route ditandai dengan tanda { }. Artinya kata pada URL yang berada
pada posisi ini akan menjadi nilai dari parameter. Untuk penulisanya buatlah satu route
baru pada file web.php yang ada pada folder routes/web.php dengan skrip sebagai
berikut:
Jika parameter tidak wajib diisi maka tambahkan tanda tanya ( ? ) dibelakang nama
parameter dan pada fungsi kita beri default parameter pada contoh dibawah jika
parameter tidak disebutkan misalnya pada URL localhost:8000/show maka parameter
$id akan dianggap bernilai 1 sesuai dengan default parameter yang diberikan.
Route ini akan dijalankan hanya jika nilai dari parameter pada URL memenuhi syarat
tertentu. Misalnya pada baris pertama contoh di bawah, parameter judul harus berupa
karakter A sampai Z atau a sampai z. Dengan demikian, maka URL
Sedangkan jika nilai pada bagian parameternya kita ganti menjadi angka maka Laravel
tidak akan mengeksekusi route tersebut. Dapat dicoba dengan mengetikan pada link
browser alamat http://localhost:8000/edit/123 maka laravel akan mengeluar error seperti
berikut:
Error diatas bertuliskan NotFoundHttpException yang berarti Route untuk link yang
diakses tidak ditemukan.
Route dengan pendefinisian nama atau identitas memiliki kelebihan yang dapat
digunakan hanya dengan menyebutkan nama yang diberikan. Contohnya buatlah 2 route
baru pada file web.php yang ada pada folder routes/web.php
Route::get('/index', function () {
echo "<a href='".route('create')."'>Akses Route dengan nama </a>";
});
Route diatas akan digunakan untuk menapilkan tag <a> dalam atribut href nya akan
diisikan nama dari route yang akan diakses.
Route::get('/create', function () {
echo "Route diakses menggunakan nama";
})->name('create');
Route diatas adalah route dengan pendefinisan nama yang akan coba kita akses dari route
diatasnya.
Untuk melakukan uji coba pada Route dengan pendefinisian nama bukalah browser dan
ketikan link localhost:8000/index maka akan muncul halaman seperti berikut:
Jika link Akses route dengan nama di klik maka kita akah diarahkan ke halaman
dengan route name create sebagai berikut:
Route seperti ini ketika dijalankan akan mengakses controller yang disebutkan pada
parameter kedua. Jika ingin mengakses method atau function tertentu pada controller,
maka antara nama controller dengan nama fungsi dipisahkan dengan tanda @. Untuk
mempraktekan route ini buatlah satu controller dengan menggunakan perintah artisan
sebagai berikut:
Jalankan perintah artisan diatas pada cmd yang sudah terarah pada folder projek Laravel
yang digunakan atau dalam modul ini adalah projek dengan nama penjualan seperti pada
gambar dibawah:
Perintah artisan diatas akan menghasilkan satu file baru bernama produkController.php
yang terletak di folder app\Http\Controller. Bukalah file controller tersebut dan
tambahkan satu fungsi bernama index seperti pada controh skrip dibawah:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
Route::get('/produk', 'produkController@index');
Lakukan uji coba pada route diatas dengen cara membuka browser dan ketikan
localhost:8000/produk pada link browser yang digunakan maka akan muncul halaman
seperti berikut:
TUGAS
MODUL IV
VIEW DAN BLADE TEMPALTE
(Pertemuan 4 dan 5)
Tujuan :
Sedangkan blade template merupakan engine yang disediakan laravel untuk memudahkan
developer dalam menampilkan data pada view. Dengan blade tempalte ini kita tidak perlu lagi
menggunakan <?php echo $data ?> untuk menampilkan variabel data pada view. Untuk
menggunakan blade tempalete, file view harus disimpan dengan akhiran .blade.php dan
disimpan pada folder resourcess/views.
Route::get('/produk', 'produkController@index');
Pada route diatas, jika pada browser dituliskan alamat localhost:8000/produk maka kita
akan diarahkan ke class produkController ke dalam fungsi index. Selanjutnya bukalah file
produkController.php yang ada di dalam folder app\Http\Controller dan kemudian
modifikasi script nya menjadi seperti berikut:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class produkController extends Controller
{
public function index()
{
$produk = 'Aqua 400ML';
return view('produk/index',compact('produk'));
}
}
Di dalam fungsi index() yang telah dibuat kita mendefinisikan satu variabel bernama produk
yang langsung kita ikut sertakan lempar bersama dengan return view yang dimana view yang
akan dicari berada pada folder projek Laravel yaitu penjualan/resources/views/produk/ dengan
nama index.blade.php. karena view tersebut belum dibuat maka buatlah satu file baru pada
folder penjualan/resources/views/produk/ dan beri nama index.blade.php dan isikan skript
sebagai berikut:
<!DOCTYPE html>
<html>
<head>
<title>Laravel Saya</title>
</head>
<body>
<h1>Produk : {{ $produk }}</h1>
</body>
</html>
Pada script diatas kita menampilkan value dari variabel produk dengan hanya menggunakan
tanda {{ dan ditutup dengan tanda }}. Fitur yang memungkinkan untuk menampilkan data dengan
cara tersebut yaitu blade template yang akan dibahas pada materi selanjutnya. Dan jika kita
membuka link localhost:8000/produk maka akan muncul halaman seperti berikut:
<!DOCTYPE html>
<html>
<head>
<title>Laravel Saya</title>
</head>
<body>
<h1>Produk : {{ isset($produk) ? $produk : 'Produk Kosong' }}</h1>
</body>
</html>
Dan jika dijalankan kembali hasilnya adalah seperti berikut:
Pada hasil diatas memang tidak terdapat perbedaan dari sebelumnya, namun sebernarnya dengan
cara tersebut, jika variabel produk telah dideklarasikan, maka akan ditampilkan nilai variabel
produk, sedangkan jika belum dideklarasikan maka akan menampilkan text default ‘produk
kosong’.
Blade template juga menyediakan cara tersendiri untuk melakukan logika percabangan
maupun perulangan. Untuk melakukan percabangan dengan blade template dapat menggunakan
@if.. @else.. @endif. Untuk mencobanya buatlah satu route baru pada file web.php yang
berada pada folder routes/web.php dengan sintak sebagai berikut:
Route::get('/produk/show, 'produkController@show);
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class produkController extends Controller
{
public function index()
{
$produk = 'Aqua 400ML';
return view('produk/index',compact('produk'));
}
<!DOCTYPE html>
<html>
<head>
<title>CONTROL STRUKTUR PADA BLADE TEMPLATE</title>
</head>
<body>
@if (count($produk)==1)
<p>Jumlah Produk adalah satu</p>
@elseif(count($produk)>1)
<p>Jumlah Produk Lebih dari satu</p>
@else
<p>Tidak Ada Data Produk</p>
@endif
</body>
</html>
Sedangkan untuk perulangan pada blade template mendukung berbagai jenis perulangan, dengan
contoh sebagai berikut:
<!DOCTYPE html>
<html>
<head>
<title>CONTROL STRUKTUR PADA BLADE TEMPLATE</title>
</head>
<body>
@if (count($produk)==1)
<p>Jumlah Produk adalah satu</p>
@elseif(count($produk)>1)
<p><b>Perulangan dengan FOR</b></p>
@for ($i = 0; $i < count($produk); $i++)
<p>{{ 'No :'.$i.' Nama Produk :'.$produk[$i] }}</p>
@endfor
<hr>
<hr>
<p><b>Perulangan dengan WHILE</b></p>
@php
$no = 1;
@endphp
@while ($no<=5)
<p>ini adalah perulangan ke {{ $no }}</p>
@php
$no++;
@endphp
@endwhile
@else
<p>Tidak Ada Data Produk</p>
@endif
</body>
</html>
Jika halaman pada link localhost:8000/produk/show di refresh atau dimuat ulang maka
halamanya akan nampak seperti pada gambar dibawah;
<!DOCTYPE html>
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
<header>
@include('layout.header')
</header>
<ul>
@section('sidebar')
<li>HTML</li>
<li>CSS</li>
<li>JS</li>
@show
</ul>
<div class="container">
@yield('content')
</div>
</body>
</html>
1. @yield(‘title’) diartikan kita menyediakan tempat yang datanya akan diisi oleh file lain
menggunakan @section(‘title’). Begitu juga dengan script yield(‘content’) akan diisi
oleh file blade lain dengan @section(‘content’). Data data bagian ini bersifat dinamis
sesuai dengan halaman yang sedang dibuka.
3. @section(‘sidebar) ... @show diartikan kita menyediakan tempat yang isi dapat
ditambahkan oleh file lain dengan menggunakan section @section(‘sidebar’).
Selanjutnya buatlah satu file baru pada folder yang sama yaitu resources/views/layout dengan
nama header.blade.php dan isikan script sebagai berikut:
Selanjutnya untuk membuat contoh halaman yang menggunakan layout. Buatlah satu folder baru
dan berinama konten pada folder resourcess/views untuk menyimpan contoh halaman yang
akan kita buat. Misalnya kita buat satu file dengan nama halaman.blade.php dengan script
sebagai berikut:
@extends('layout.layout')
@section('title',$title)
@section('sidebar')
@parent
<li>PHP</li>
@endsection
@section('content')
<p>{{ $konten }}</p>
@stop
Keterangan dari masing-masing script diatas adalah sebagai berikut:
Untuk membuktikan hasil dari pembuatan layout diatas, silahkan buat route pada file web.php
pada file routes/web.php dengan script sebagai berikut:
Route::get('/halaman',function(){
$title = 'Harry Pooter';
$konten = 'harry potter and the deathly hallows: part 2';
return view('konten.halaman',compact('title','konten'));
});
Pada script diatas kita membuat variabel $title dan $konten yang akan dikirimkan ke view
dengan fungsi compact(). Jika kita membuka localhost:8000/halaman maka hasilnya akan
nampak seperti gambar dibawah:
TUGAS
- Buatlah view dan blade untuk projek anda
- Buatlah layout dengan master template blade untuk projek anda
MODUL V
CONTROLLER
(Pertemuan 6,7)
Tujuan :
Untuk membuat Controller, kita tidak perlu membuatnya secara manual, karena Laravel
memiliki fitur artisan yang sudah dibahas pada bagian sebelumnya untuk mempermudah
pembuatan Controller. Silahkan jalankan cmd atau comand prompt dan arahkan ke projek laravel
yang dibuat kemudian tuliskan script berikut (masih dengan projek Laravel penjualan):
Route::get('/pelanggan', 'pelangganController@index');
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
{
public function index()
{
echo "ini index dari controller";
}
}
Untuk mengetes apakah pembuatan fungsi pada controller sudah berhasil maka bukalah alamat
route yang baru saja dibuat yaitu localhost:8000/pelanggan (pastikan server artisan telah aktif)
maka hasilnya akan nampak seperti berikut:
Atau pada funtion index yang ada pada pelangganController.php kita dapat langsung
melakukan return view atau mengarahkan route yang diakses ke suatu halaman, ubahlah function
index yang ada pada pelangganController lalu buatlah menjadi seperti berikut:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
<!DOCTYPE html>
<html>
<head>
<title>Pelanggan</title>
</head>
<body>
<h1>Mengakses View Pelanggan dari Controller</h1>
</body>
</html>
Kemudian akses kembali route localhost:8000/pelanggan atau reload halaman yang telah
dibuka sebelumnya, maka tampilan nya akan menjadi seperti berikut:
Pada gambar diatas adalah halaman view yang diakses dari route
locahost:800/pelanggan yang route tersebut mengarahkan kita ke pelangganController.php
dengan function yang dituju adalah function index(). Di dalam function index yang ada di dalam
pelangganController.php halaman diarahkan dengan menggunakan method view ke dalam
view index.blade.php yang ada pada folder folder resourcess/views/pelanggan.
Di dalam konsep laravel kita dapat memanggil suatu fungsi dari fungsi lain di dalam
laravel menggunakan methid this. Method this ini menandakan kita akan memanggil fungsi
yang ada di dlam satu controller yang sama dengan bentuk pemanggilan adalah untuk fungsi
yang tidak melakukan return value:
$this->nama_fungsi();
Sedangkan untuk fungsi yang melakukan return value kita perlu mendefinisikan suatu
variabel sebelum memanggil fungsi tersebut untuk tempat menyimapan return value dari fungsi
yang diakses. Untuk contoh pemanggilan fungsi yang memiliki return value dapat dilihat pada
contoh dibawah:
$data = $this->nama_fungsi();
Untuk contoh penggunaan dari pemanggilan fungsi dalam satu controller yang sama kita masih
akan menggunakan route localhost:8000/pelanggan namun pada pelangganController.php
tambahkan satu fungsi bernama dataPelanggan() dan isikan script seperti dibawah:
Pada fungsi dataPelanggan() diata kita mendefinisikan satu variabel array bernama pelanggan
dan langsung melakukan return value variabel pelanggan tersebut, kemudian pada fungsi index()
yang pada controller yang sama yaiut pelangganController.php kita modifikasi sedikit
scriptnya menjadi seperti berikut:
Pada fungsi index() diatas kita memanggil fungsi dataPelanggan() menggunakan method this
dan menerima nilai dari return value yang kita tampung kedalam variabel pelanggan yang ada di
dalam fungsi index(). Untuk menampilkan data pelanggan yang telah kita terima dari fungsi
dataPelanggan(), modifikasi view index.blade.php yang berada pada folder
resources/views/pelanggan menjadi seperti dibwah:
<!DOCTYPE html>
<html>
<head>
<title>Pelanggan</title>
</head>
<body>
<h1>Data Pelanggan</h1>
<table border="1">
<thead>
<tr>
<th>No</th>
<th>Nama</th>
</tr>
</thead>
<tbody>
@foreach ($pelanggan as $i => $v)
<tr>
<td>{{ $i+1 }}</td>
<td>{{ $v }}</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>
Untuk menghasilkan controller yang lengkap, buatlah satu controller baru dengan nama
produkController tapi tambahkan kata --resource dibelakangnya sehingga menjadi seperti
berikut:
perintah tersebut akan menghasilkan file produkController yang lengkap dengan 7 fungsi
yang dibutuhkan untuk melakukan proses CRUD pada laravel seperti berikut:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class produkController extends Controller
{
public function index()
{
//
}
public function create()
{
//
}
1. index() merupakan fungsi utama controller yang akan dipanggil ketika action tidak
disebutkan. Bisanya digunakan untuk menaruh script untuk menampilkan data.
3. store() merupakan fungsi untuk menaruh script untuk menyimpan data yang dikirim dari
form tambah data untuk disimpan ke database.
4. show() merupakan funsgi untuk menaruh script yang menampilkan data lebih detail dari
sebuah record.
5. edit() merupakan funsi untuk menaruh script untuk mengarahkan ke form edit.
6. update() fungsi ini digunakan untuk menauh script yang akan digunakan untuk
memperbaharui data dari database yang diterima dari form edit..
7. destroy() untuk menaruh script yang digunakan untuk menghapus data dari database.
Kelebihan lain yang di dapat dari pembuatan controller dengan –resource adalah kita cukup
membuat satu route yang mengarah ke controller tanpa harus membuat route masing-masing
fungsi. Untuk membuktikannya tambah route berikut ke file web.php yang ada di folder route.
Dengan mendefinisikan satu route di atas, Laravel akan membuatkan route untuk setiap fungsi
pada controller. Untuk membuktikannya, silahkan ketikan skrip artisan berikut pada cmd atau
command promt dan jangan lupa arahkan cmd ke folder projek laravel yang dibuat.
Contoh penggunaan controlller, misalnya pada fungsi index() dapat kita isi dengan script sebagai
berikut:
Kemudian buatlah satu view baru di folder resourcess/views/produk (jika folder produk tidak ada
silahkan dibuat) yang bernama index.blade.php dan isikan script sebagai berikut:
Kemudian silahkan buka localhost:8000/produk, maka hasilnya akan nampak seperti berikut:
Tugas
MODUL VI
INTERAKSI DATABASE DENGAN QUERY BUILDER
(Pertemuan 9)
Tujuan :
DASAR TEORI
Query Builder merupakan salah satu cara untuk menjalankan query database dengan
lebih mudah, Query Builder juga telah dilengkapi dengan fitur keamanan untuk mencegah
terjadinya SQL Injextion (adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan
cara memodifikasi perintah SQL yang ada di memori aplikasi client). Selain itu kita dapat
menggunakan query builder tanpa harus membuat model terlebih dahulu.
Sricpt query bulder cukup mudah dipahami, misalnya untuk menampilkan data dari tabel
produk yang dibuat sebelumnya pertama-tama kita harus mendefinisikan penggunaan class dari
QUERY BUILDER dengan cara menambahkan script use DB; pada bagian atas controller atau
seperti contoh dibawah:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
Dengan pendefinisian mengunakan script use DB; kita telah menambahkan class
QUERY BUILDER ke dalam controller produkController. Lalu untuk menampilkan data dari
tabel produks yang telah dibuat sebelumnya bisa menggunakan script berikut:
DB::table(‘produks’)->get();
Pada script diatas kita akan mengambil data dari tabel produk yang berada di dalam
database penjualan yang telah dibuat sebelumnya, adapun isi dari tabel produk tersebut adalah
sebagai berikut:
Untuk mempraktekan contoh dari latihan menampilkan data dengan QUERY BUILDER
pertama kita harus memeriksa file .env apakah projek sudah terhubung dengan database atau
belum. File ini terletak pada bagian luar projek laravel yang dibuat, dan pastikan pada bagian
mysql sudah terkonfigurasi seperti pada gambar dibawah:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=penjualan
DB_USERNAME=root
DB_PASSWORD=
Database yang akan kita gunakan adalah database dengan nama penjualan, yang telah
kita buat pada latihan pembuatan migration sebelumnya. Kemudian pada file
produkController.php yang berada pada folder app\Http\Controller telah dibuat pada latihan
sebelumnya buatlah satu fungsi yang bernama index() atau modifikasi jika sudah ada dan
tambahkan script sebagai berikut:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
Fungsi index() diatas akan mengambil semua data yang ada pada tabel produk dan kemudian
akan mengirimkannya ke view index.blade.php yang ada di dalam folder
resources/views/produk. Jadi pada view index.blade.php yang ada pada folder
resourcess/views/produk (jika belum ada silahkan dibuat) modifikasi script nya menjadi seperti
dibawah:
<!DOCTYPE html>
<html>
<head>
<title>Laravel Saya</title>
</head>
<body>
<h3><b>Data Produk</b></h3>
<table border="1">
<thead>
<tr>
<th>No</th>
<th>Nama</th>
<th>Kategori</th>
<th>Qty</th>
<th>Harga Beli</th>
<th>Harga Jual</th>
</tr>
</thead>
<tbody>
<tr>
@foreach ($produk as $i => $p)
<tr>
<td>{{ $i+1 }}</td>
<td>{{ $p->nama }}</td>
<td>{{ $p->id_kategori }}</td>
<td>{{ $p->qty }}</td>
<td>{{ $p->harga_beli }}</td>
<td>{{ $p->harga_jual }}</td>
</tr>
@endforeach
</tr>
</tbody>
</table>
</body>
</html>
Sebelum mencoba menjalankan skript diatas pertama-tama cobalah untuk memeriksa route yang
ada pada file web.php yang ada pada folder routes/web.php dan periksa apakah route
Route::get('/produk', 'produkController@index'); sudah didefinisikan atau belum. Jika
sudah maka aktifkan server artisan pada cmd lalu akses http://localhost:8000/produk maka hasilnya
akan nampak seperti pada gambar dibawah:
Jika diperhatikan pada tampilan data produk pada tabel diatas pada kolom id_kateogri
kita masih menampilkan angka atau bukan data dari suatu kategori produk. Untuk
memperbaikinya buatlah satu tabel baru dengan nama kateogri menggunakan fasilitas migration
pada Laravel dengan tahapan sebagai berikut:
1. Jalankan perintah artisan berikut pada cmd atau comand promt yang sudah terarah ke
dalam directori projek laravel yang digunakan seperti pada contoh gambar:
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('kategori');
}
}
3. Jalankan perintah php artisan migrate seperti pada gambar dibawah.
4. Tambahkan beberapa data ke dalam tabel kateogri secara manual melalui phpMyAdmin
sehingga akan tambak seperti pada gambar dibawah:
Setelah membuat tabel kategori beserta dengan 1 contoh datanya sekarang bukalah class
Controller produkController.php yang ada pada folder app\Http\Controller dan modifikasi
fungsi index() yang ada di dalam controller tersebut menjadi seperti dibawah:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
return view('produk/index',compact('produk'));
}
Kemudian pada view index.blade.php yang ada pada folder resources/views/produk/ modifikasi
kodingnya menjadi seperti dibawah:
<!DOCTYPE html>
<html>
<head>
<title>Laravel Saya</title>
</head>
<body>
<h3><b>Data Produk</b></h3>
<table border="1">
<thead>
<tr>
<th>No</th>
<th>Nama</th>
<th>Kategori</th>
<th>Qty</th>
<th>Harga Beli</th>
<th>Harga Jual</th>
</tr>
</thead>
<tbody>
<tr>
@foreach ($produk as $i => $p)
<tr>
<td>{{ $i+1 }}</td>
<td>{{ $p->nama }}</td>
<td>{{ $p->kategori }}</td>
<td>{{ $p->qty }}</td>
<td>{{ $p->harga_beli }}</td>
<td>{{ $p->harga_jual }}</td>
</tr>
@endforeach
</tr>
</tbody>
</table>
</body>
</html>
Selain menggunakan cara diatas, ada berbagai variasi dalam menampilkan data
menggunakan query builder. Berikut ini adalah berbagai script untuk menampilkan data dengan
Query Builder:
join(‘nama_table2’,’
nama_tabel1.primary_key’,’=’,’ Menampilkan tabel dengan join.
nama_tabel2.foreginkey’)->get();
leftjoin(‘nama_table2’,’
Menampilkan data dengan leftjoin, terdapat
nama_tabel1.primary_key’,’=’,’
juga pilihan rightjoin().
nama_tabel2.foreginkey’)->get();
Route::get('/produk/store', 'produkController@store');
Pada route diatas akan menjalankan fungsi store yang ada di dalam class Controller
produkController.php, untuk itu bukalah file produkController yang ada pada folder
App/Http/Controller dan tambahkan satu fungsi yang bernama store() dan isikan script sebagai
berikut:
Dan bila kita memerika tabel produk yang ada di dalam database penjualan maka akan ada satu
data baru seperti pada gambar dibawah:
Route::get('/produk/update', 'produkController@update');
Pada route diatas jika kita membuka localhost:8000/produk/update maka kita akan dibawa ke
function update() yang ada pada file produkController.php, maka dari itu buatlah satu function
baru bernama update di file produkController.php yang ada pada folder App/Http/Controller
dengan script sebagai berikut:
Pada script diatas merupakan script untuk memperbaharui data menggunakan Query Builder.
Pertama kita harus menentukan data mana yang akan diperbaharui dengan menggunakan fungsi
where() dan diikuti dengan fungsi update() untuk memperbaharui data yang ada pada kolom.
Dan jika dilihat pada tabel produk yang ada pada database penjualan data dengan id 3 akan
berubah:
Route::get('/produk/delete', 'produkController@delete');
Pada route diatas jika kita mengakses localhost:8000/produk/delete pada browser maka kita
akan diarahkan ke fungsi delete yang ada pada file produkController, maka dari itu buatlah
fungsi yang bernama delete pada file produkController.php dan isikan script sebagai berikut:
Pada script diatas adalah script untuk menghapus data menggunakan Query Builder. Pertama kita
harus menentukan terlebih dahulu data mana yang akan dihapus menggunakan fungsi where()
untuk menghapus data dengan syarat tertentu. Lalu diikuti dengan fungsi delete() untuk
menghapus data. Jika kita menjalankan localhost:8000/produk/delete maka akan muncul
halaman seperti berikut:
Dan jika dilihat pada tabel produks data dengan id 3 telah dihapus:
Tugas
MODUL VII
INTERAKSI DATABASE DENGAN ELOQUENT ORM
(Pertemuan 10)
Tujuan :
DASAR TEORI
Eloquent ORM ( Object Relational Mapping ) merupakan teknik untuk memetakan basis
data relasional ke model objek. Berinteraksi dengan database seperti menampilkan, menambah,
mengubah atau menghapus data menggunakan Eloquent ORM lebih disarankan walaupun kita
dapat menggunakan Query Builder tanpa membuat model terlebih dahulu.
Hal yang perlu diperhatikan sebelum menggunakan Qloquent ORM untuk berintaksi
dengan database adalah model, secara default eloquent akan menganggap nama class model
adalah sebagai nama tabel dengan menambahkan ‘s’ dibelakangnya. Secara default eloquent juga
akan beramsumi kolom primary key dari tabel akan bernama id, serta eloquent juga kan
beramsumi kita ingin mengetahui kapan suatu data ditambah dan diperbaharui maka dari itu kita
perlu menyiapkan dua kolom tambahan yang bernama created_at dan updated_at yang bertipe
datetime. Pada contoh ini kita akan menggunakan tabel kategori yang telah dibuat sebelumnya.
Pertama-tama periksalah model dari tabel kateogri pada folder app/ jika model belum
dibuat maka buatlah menggunakan perintah artisan make:model atau seperti berikut:
perintah tersebut akan menghasilkan file model baru yang bernama kategori.php pada folder
app/. Bukalah dan modifikasi file model kateogri.php tersebut menjadi seperti berikut:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
ELOQUNET mengaharuskan kita mendefinisikan kolom-kolom yang kita gunakan, namun kita
tidak perlu mendefinisikan semua kolom, hanya kolom yang boleh diisi oleh pengguna (fillable )
atau kolom yang tidak boleh diisi oleh pengguna ( guarded ). Pada script diatas kita
mendifinisikan kolom guarded atau kolom yang tidak boleh diisi oleh pengguna dan secara
otomatis sisa kolom yang tidak didefinisikan akan termasuk ke kolom fillable atau boleh diisi
Program Studi Sistem Komputer 53
Modul Praktikum Pemrograman Web Lanjut
oleh pengguna. Selain itu kita juga mendefinisikan satu variabel bernama table dengan nilai
variabel tersebut adalalah kategori, hal ini dilakukan karena tabel dengan nama kategori yang
telah kita buat tidak memenuhi syarat nama tabel dengan menggunakan ELOQUENT maka dari
itu kita bisa mengakalinya dengan mendefinisikan variabel tersebut di dalam model.
Route::get('/kategori', 'kategoriController@index');
Pada route diatas jika kita mengakses link localhost:8000/kategori maka kita akan diarahkan ke
fungsi index() yang ada pada file kategoriController.php. Jadi karena controller
kategoriController.php belum dibuat maka buatlah dengan menggunakan perintah artisan berikut
pada cmd atau comand prompt:
Untuk menampilkan data kateogri produk buatlah satu fungsi bernama index() pada
kategoriController.php dengan skript sebagai berikut:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\kategori;
Fungsi index() diatas akan menampilkan view index.blade.php yang berada pada folder
resources/views/kategori, karena view ini belum dibuat maka buatlah terlebih dahulu dengan
cara membuat file baru pada folder resources/views/kategori dengan nama index.blade.php
dan isikan skript seperti dibawah:
<!DOCTYPE html>
<html>
<head>
<title>Laravel</title>
</head>
<body>
<h2><b>Data Kategori Produk</b></h2>
<table border="1">
<thead>
<tr>
<th>No</th>
<th>Nama Kategori</th>
<th>Keterangan</th>
<th>Dibuat</th>
<th>Terakhir Diperbaharui</th>
</tr>
</thead>
<tbody>
@foreach ($kategori_produk as $i => $k)
<tr>
<td>{{ $i+1 }}</td>
<td>{{ $k->kategori }}</td>
<td>{{ $k->keterangan }}</td>
<td>{{ $k->created_at }}</td>
<td>{{ $k->updated_at }}</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>
Sekarang jika kita mengakses link localhost:8000/kategori (pastikan server artisan sudah
berjalan) maka halaman browser akan menampilkan halaman seperti berikut:
Pada Eloqunet ORM untuk melakukan operasi tambah, edit dan menghapus data tedapat dua cara
yang pertama menggunakan Eloqunet ORM biasa atau menggunakan Eloquent ORM Mass
Assignment. Perbedaan dari kedua cara ini terlihat pada penulisan syntaknya.
MENAMBAH DATA
Untuk menambahkan data menggunakan Eloquent ORM langkah-langkahnya sama dengan
Query Builder. Pertama siapkan route seperti gambar dibawah.
Route::get('/kategori/store', 'kategoriController@store');
Lalu pada file kategoriController.php buatlah satu fungsi baru bernama store() dan tambahkan
koding dengan script berikut:
Dan jika dilihat pada database penjualan di tabel kategori maka akan ada 2 data baru seperti pada
gambar dibawah:
Dapat dilihat pada data dengan id no 2 dan 3 adalah hasil dari script menyimpan data
menggunakan ELOQUENT. Kelebihan dari Eloquent sendiri kolom created_at dan updated_at
akan terisi otomatis tergantung dari kapan data itu dibuat dan kapan data itu diperbaharui.
MEMPERBAHARUI DATA
Untuk mempraktekannya buatlah satu route baru pada file web.php yang ada pada folder
routes seperti berikut:
Route::get('/kategori/update', 'kategoriController@update');
Route diatas akan mengarahkan kita ke fugsi update() jika kita mengakses link
localhost:8000/kateogri/update maka dari itu masuklah ke file kategoriController.php yang
berada pada folder app\Http\Controller dan buat satu fungsi baru bernama update() dan isikan
script seperti berikut:
return redirect('/kategori');
}
Pada script diatas adalah sintak untuk memperbaharui data menggunakan Eloquent biasa, dan
jika diperhatikan kita langsung melakukan redirect atau langsung mengalihkan halaman ke route
localhost:8000/kateogri. sekarang jika kita menjalankan route localhost:8000/kateogri/update
maka hasilnya kita akan dibawa kembali ke halaman kateogri dengan data kategori yang telah
diperbaharui seperti pada gambar dibawah:
Upadate data menggunakan Eloquent juga memiliki metode Mass Assignment yatu dimuali dari
mendifinisikan data mana yang akan di update yang diikuti oleh array assosiatif sebagai nama
kolom dan value yang akan diperbaharui. Untuk mencobanya ubahlah fungsi update() yang ada
pada file kategoriContoller.php menjadi seperti berikut:
return redirect('/kategori');
}
MENGHAPUS DATA
Untuk menghapus data menggunakan Eloquent kita harus mendefinisikan terlebih dahulu
data mana yang akan dihapus dan diikuti dengan fungsi delete() untuk menghapus data tersebut
dari tabel. Untuk mencobanya buatlah satu route baru di file web.php dengan script sebagai
berikut:
Route::get('/kategori/delete', 'kategoriController@delete');
Pada route diatas kita akan diarahkan ke fungsi delete() yang ada pada file
kateogriController.php jika kita mengakses route localhost:8000/kategori/delete. Selanjutnya
buatlah satu fungsi baru bernama delete() pada file kateogriController.php dan isikan script
seperti dibawah.
Dan jika diperiksa pada tabel kategori yang ada pada penjualan maka data dengan id 1 telah
dihapus.
Untuk menghapus data ELOQUENT juga memiliki metode Mass Assignment dimana sintaknya
diawali dengan penulisan model dan diikuti dengan mendefinisikan data mana yang dihapus dan
diakhiri dengan fungsi delete(). Untuk mencobanya ubahlah fungsi delete() yang ada pada file
kategoriController.php menjadi seperti berikut:
Lalu cobalah jalankan route localhost:8000/kategori/delete sekali lagi. Script diatas akan
menghapus data yang ada pada tabel kategori yang memiliki id 2. Jika dilihat pada tabel kategori
yang ada pada database penjualan maka akan data dengan id 2 telah dihapus:
Tugas
MODUL VIII
OPERASI CRUD PADA LARAVEL
(Pertemuan 11,12,13)
Tujuan :
1. Mahasiswa mampu memahami proses Create, Read, Update, Delete (CRUD) data pada
framework
2. Mahasiswa mampu memahami konfigurasi database
3. Mahasiwa mampu memahami pengunaan authentication
4. Mahasiwa mampu memahami pembuatan tabel dengan migration
5. Mahasiswa mampu memahami pembuatan model dengan eloquent
6. Mahasiwa mampu mengimplementasikan controller dan route
DASAR TEORI
Pada materi-materi sebelumnya, kita telah mempelajari fitut-fitur penting pada Laravel.
Agar lebih paham pada bagian ini akan membahas tentang contoh CRUD (create, read, update
dan detele) pada Laravel. Dengan pembahasan ini diharapkan para mahasiswa akan semakin
mengerti hubungan anatara masing-masing komponen yang telah dipelajari pada bagian bagian
sebelumnya.
Contoh CRUD yang akan dibuat adalah tabel produk yang berada pada database penjualan.
Tabel produk itu sendiri akan berelasi dengan tabel kategori produk. Untuk membuat contoh
CRUD pada tabel produk kita perlu membuat route, model, controller, dan view. Untuk
memulainya silahkan buat satu projek laravel baru dan beri nama penjualan dengan cara
menjalan script berikut pada cmd atau comand prompt yang sudah terarah ke folder htodocs yang
ada pada xampp.
Kemudian jika proses instalasi telah selesai cobalah jalankan projek laravel yang baru dibuat
dengan nama latihan_penjualan menggunakan server artisan dengan menjalankan script berikut
pada cmd php artisan serve. Sebelum menjalankan script php artisan serve pastika bahwa
directory cmd sudah berada pada folder projek latihan_penjualan laravel yang telah dibuat,
kemudian pada browser akses lah link localhost:8000 dan pastikan projek laravel sudah tampil
seperti pada gambar dibawah:
Untuk mengaktifkan fitur ini cukup jalankanlah perintah atisan dibawah pada comand
prompt yang sudah diarahkan ke projek laravel penjualan.
Hasilnya ialah akan ada tombol login ataupun register disebelah kanan atas pada halaman awal
Laravel. Jika tulisan login atau register di klik maka kita akan diarahkan ke form register ataupun
login, namun login atau register tersebut belum dapat digunakan karna belum ada tabel untuk
menyimpan data pengguna. Maka dari itu ikuti dulu materi selanjutnya tentang membuat tabel
dengan migration dibawah.
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}
Kemudian buatlah satu file migration baru untuk tabel kategori produk dengan menggunakan
perintah artisan sebagai berikut:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}
Sebelum menjalankan perintah php artisan migrate untuk melakukan migrasi rancangan
database ke database sql buatlah satu database baru dengan nama latihan_penjualan dan
konfigurasi database pada file .env yang ada pada projek Laravel latihan_penjualan/.env
menjadi seperti pada gambar dibawah:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=latihan_penjualan
DB_USERNAME=root
DB_PASSWORD=
Jika database sudah terkonfigurasi Sebelum menjalankan perintah migration kita harus
melakukan sedikit konfigurasi pada file database.php yang ada pada folder projek laravel yang baru
dibuat atau pada folder latihan_penjualan/config/database.php pada baris ke 53 ubahlah value
strict dari true menjadi false seperti pada script dibawah :
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
Kemudian sekarang jalankan perintah php artisan migrate pada cmd atau comand prompt yang
sudah terarah pada projek laravel latihan_penjualan yang telah dibuat, maka rancangan database
yang dibuat dengan migration tadi akan dibawa ke database mysql dan jika dilihat pada
localhost/phpmyadmin akan ada tabel produks dan tabel kategori.
Dapat dilihat pula tabel users, migrations dan password resets, yang dimana tabel users tersebut
adalah tabel berfungsi untuk menyimpan data pengguna yang melakukan register menggunakan
fitur Authentication yang dibuat pada tabel sebelumnya dan sekarang fitur login dan register dari
laravel siap digunakan. Lakukanlah register untuk membuat akun baru agar bisa mengakses
halaman home untuk admin.
Pertama jalankanlah perintah artisan berikut pada cmd yang sudah terarah ke projek
laravel penjualan:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
Pada script produk.php diatas ada satu fungsi bernama kateogri, fungsi ini berfungsi
untuk merelasikan tabel produk dengan tabel kateogri.
Langkah kedua adalah membuat model untuk tabel kategoris. Jalankan perintah artisan dibawah
untuk membuat model tersebut:
namespace App;
use Illuminate\Database\Eloquent\Model;
perintah diatas akan menghasilkan file dengan nama kategoriTableSeeder.php yang terletak di
folder database/seeds. bukalah file tersebut dan modifikasi menjadi seperti dibawah:
<?php
use Illuminate\Database\Seeder;
use App\kategori;
Sebelum mengeksekusi seeder diatas bukalah file DatabaseSeeder.php yang berada pada folder
yang sama dengan tabel seeder yang baru saja dibuat dan modifikasi fungsi up() menjadi seperti
berikut:
<?php
use Illuminate\Database\Seeder;
Kemudian sekarang barulah jalankan perintah artisan php artisan db:seed untuk
mengeksekusi seeder yang baru saja dibuat. Dan jika dilihat pada database latihan_penjualan
tabel kateogri maka akan muncul contoh data baru seperti pada gambar dibawah:
Setelah membuat controller selanjutnya adalah mendefinisikan route untuk mengakses tiap-tiap
fungsi yang ada pada controller produkController. Karena kita menggunakan –tag resource maka
kita hanya perlu mendefinisikan satu route untuk mengakses semua fungsi yang ada pada
controller produkController. Untuk mendefinisikannya bukalah file web.php yang ada pada
folder routes dan tambahkan script seperti dibawah untuk mendefinisikan route untuk
mengakses fungsi-fungsi yang ada pada controller produkController:
MENAMPILKAN DATA
Untuk menampilkan data yang ada pada tabel bukalah file produkController.php dan modifikasi
fungsi index() menjadi seperi berikut:
Setelah memodifikasi fungsi index yang ada pada controller langkah selanjutnya adalah
memodifikasi tampilan Dashboard setelah login untuk menambah menu produk agar kita bisa
mengakses menu untuk melakukan proses CRUD untuk tabel produk dengan cara bukalah file
app.blade.php yang ada pada folder resources/views/layouts/ dan modifikasi pada bagian class
collapse navbar-collapse menjadi seperti berikut :
Kemudian buatlah folder baru di dalam folder resources/views dengan nama produk dan
buatlah file dengan nama index.blade.php yang berisikan script sebagai berikut:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-head container-fluid" style="margin-top: 10px;">
<a href="{{ route('produk.create') }}" class="btn btn-
primary">Tambah Produk</a>
<div class="pull-right">
<p>Data produk</p>
</div>
</div>
<div class="panel-body">
<table class="table table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama</th>
<th>Kategori</th>
<th>Qty</th>
<th>Harga Beli</th>
<th>Harga Jual</th>
<th>Dibuat Pada</th>
<th>Diedit Pada</th>
<th colspan="3" style="text-align:
center;">Aksi</th>
</tr>
</thead>
<tbody>
@foreach ($produk as $i => $p)
<tr>
<td>{{ $i+1 }}</td>
<td>{{ $p->nama }}</td>
<td>{{ $p->Kategori->nama }}</td>
<td>{{ $p->qty }}</td>
<td>{{ $p->harga_beli }}</td>
<td>{{ $p->harga_jual }}</td>
<td>{{ $p->created_at }}</td>
<td>{{ $p->updated_at }}</td>
<td><a href="{{
route('produk.show,$p->id) }}" class="btn btn-warning"> Detail</a></td>
<td><a class="btn btn-success"
href="{{ route('produk.edit',$p->id) }}"> Edit</a></td>
<td>
<form method="post"
action="{{ route('produk.destroy',$p->id) }}">
{{ csrf_field() }}
<input type="hidden"
name="_method" value="DELETE">
<button class="btn
btn-danger" type="submit">Hapus</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection
Maka ketika kita memilih menu produk yang ada pada halaman dashboard akan muncul halaman
seperti berikut:
MENAMBAH DATA
Untuk melakukan penambahan data produk langkah pertama yang harus kita lakukan
adalah menampilkan form untuk menambah data, maka dari itu bukalalah controller
produkController dan modifikasi fungsi create() yang ada di dalamnya menjadi seperti berikut:
Kemudian buatlah satu file baru pada folder resources/views/produk/ dengan nama
create.blade.php dan isikan script sebagai beriktu:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-head container-fluid" style="margin-top: 10px;">
<p>Tambah Data produk</p>
</div>
<div class="panel-body">
<form class="form-horizontal" action="{{ route('produk.store')
}}" method="post">
{{ csrf_field() }}
<div class="form-group">
<label class="control-label col-sm-2">Nama
Produk</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="nama">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Kategori
Produk</label>
<div class="col-sm-10">
<select class="form-control"
name="kategori">
<option value="">Pilih
Kateogri</option>
@foreach ($kategori as $k)
<option value="{{ $k->id
}}">{{ $k->nama }}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Qty
Awal</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="qty">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Harga
Jual</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="jual">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Harga
Beli</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="beli">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-
primary">Simpan</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
Jika diperhatikan pada tag form pada bagian action terdapat script yang bertuliskan
{{route(‘produk.store’)}}, script tersebut merupakan fungsi yang digunakan untuk
mengakses suatu route berdasarkan name yang telah diberikan pada suatu route. Sedangkan
route produk.store dihasilkan dari penggunaan Route::resource daftar route dan namanya
dapat dilihat menggunakan cmd dengan perintah artisan php artisan route::list.
Jika diperhatikan juga terdapat script bertuliskan {{ csrf_field() }}, script ini digunakan
untuk membuat hidden field yang berisi token CRSF. Fungsinya untuk memberikan keamanan
dengan token pada setiap form, pada Laravel token ini wajib disiikan pada setiap form.
Langkah selanjutnya adalah memberikan script untuk menyimpan data produk ke dalam
database. Pada atribut action yang ada pada form tambah produk kita menuliskan
{{route(‘produk.store’)}} route tersebut akan membara data yang diinputkan di form ke
dalam produkController.php ke dalam fungsi store, jadi bukalah controller ProdukController
kemudian modifikasi fungsi store menjadi seperti berikut:
Pada fungsi store di bagian parameter kita memanggil fungsi bernama Request, fungsi tersebut
digunakan untuk menangkap data inputan dari form lalu akan disimpan ke dalam $request.
Untuk script menambah data kita menggunakan Eloquent ORM, pada bagian akhir fungsi kita
melakukan return nilai yakni redirect()->route('produk.index'); script tersebut
Program Studi Sistem Komputer 72
Modul Praktikum Pemrograman Web Lanjut
adalah fasilitas yang disediakan Laravel untuk mengarahkan kita secara otomatis ke dalam route
tertentu dan pada kasus diatas kita akan diarahkan ke kembali ke halaman index dari produk dan.
Sekarang form tambah produk sudah siap digunakan, silahkan lakukan uji coba pada form.
Pada bagian diatas jika kita menekan tombol simpan maka halaman akan langsung diarahkan ke
halaman utama produk atau halaman index produk dengan satu data baru di tabelnya.
MEMPERBAHARUI DATA
Untuk dapat memperbahari data pada Laravel sama dengan menambah data kita harus
menampilkan form edit data terlebih dahulu, namun perbedaannya kita harus menampilkan nilai
lama dari data yang ingin diedit, maka dari itu bukalah file controller produkController dan
modifikasi pada bagian fungsi edit() menjadi seperti berikut:
Pada script fungsi edit() diatas kita mengambil data produk dari tabel produk menggunakan
model Eloquent dengan kondisi id dari produk sama dengan parameter yang diberikan pada link
edit pada tombol edit yang ada di halaman utama produk dan kemudan kita melakukan return
view untuk menampilkan view edit.blade.php yang ada di dalam folder
resourece/views/produk/. Karena file tersebut belum ada maka buatlah satu file baru dengan
nama edit.blade.php pada folder resourece/views/produk/ dan isikan script sebagai berikut:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-head container-fluid" style="margin-top: 10px;">
<p>Tambah Data produk</p>
</div>
<div class="panel-body">
<form class="form-horizontal" action="{{
route('produk.update',$produk->id) }}" method="post">
{{ csrf_field() }}
<input type="hidden" name="_method" value="PUT">
<div class="form-group">
<label class="control-label col-sm-2">Nama
Produk</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="nama" value="{{ $produk->nama }}">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Kategori
Produk</label>
<div class="col-sm-10">
<select class="form-control"
name="kategori">
<option value="">Pilih
Kateogri</option>
@foreach ($kategori as $k)
<option value="{{ $k->id }}"
@if ($produk->id_kategori==$k->id) selected @endif>{{ $k->nama }}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Qty
Awal</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="qty" value="{{ $produk->qty }}">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Harga
Jual</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="jual" value="{{ $produk->harga_jual }}">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Harga
Beli</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="beli" value="{{ $produk->harga_beli }}">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-
primary">Perbaharui Data</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
Jika diperhatikan di dalam tag form terdapat script <input type="hidden" name="_method"
value="PUT"> field ini digunakan untuk menandakan bahwa data pada form akan dibawa ke
dalam route produk.upadate yang method nya adalah PUT yang dimana route tersebut telah
disediakan secara otomatis karena kita memakai Route::resources. Selanjutnya bukalah file
controller produkController.php dan modifikasi pada bagian fungsi update(); menjadi seperti
berikut:
Pada fungsi update kita menerima parameter berupa data dari form edit yang kita tangkap
menggunakan fungsi Request yang kemuidan juga kita simpan ke dalam variabel request serta
kita juga mengirim data id dari produk yang kita edit yang juga kita tangkap pada bagian
paramter fungsi edit yang kita beri nama $id. Setelah itu kita menyimpan nilai baru dari data
produk menggunakan eloquent ORM. Setelah menyimpan nilai baru tersebut kita melakukan
return redirect()->route('produk.index'); yang akan secara otomatis langsung
mengarahkan kita ke route produk.index atau halaman utama produk.
Langkah selanjutnya adalah melakukan uji coba untuk memperbaharui data. Silakan pilih
menu edti dari data produk yang baru ditambah tadi. Kemudian akan muncul form seperti pada
gambar dibawah:
Kemudian lakukan perubahan pada masing-masing kolom dan klik tombol perbaharui data.
Maka data perubahan akan disimpan dan kita akan diarahkan kembali ke halaman utama produks
dengan data produk yang telah diperbahari:
{
$produk = produk::where('id',$id)->first();
return view('produk.show',compact('produk'));
}
Kemudian buatlah satu file baru pada folder resourece/views/produk/ dengan nama
show.blade.php dan isi script sebagai berikut:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-head container-fluid" style="margin-top: 10px;">
<p>Data Detail produk</p>
</div>
<div class="form-horizontal">
<div class="panel-body">
{{ csrf_field() }}
<input type="hidden" name="_method" value="PUT">
<div class="form-group">
<label class="col-sm-2">Nama Produk</label>
<div class="col-sm-10">
<p>{{ $produk->nama }}</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-2">Kategori Produk</label>
<div class="col-sm-10">
{{ $produk->kategori->nama }}
</div>
</div>
<div class="form-group">
<label class="col-sm-2">Qty Awal</label>
<div class="col-sm-10">
<p>{{ $produk->qty }}</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-2">Harga Jual</label>
<div class="col-sm-10">
<p>{{ $produk->harga_jual }}</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-2">Harga Beli</label>
<div class="col-sm-10">
<p>{{ $produk->harga_beli }}</p>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<a href="{{ route('produk.index') }}"
class="btn btn-warning">Data Produk</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
Selanjutnya lakukan uji coba dengan mengklik tombol detail yang ada pada salah satu data
di tabel produk maka kita akan diarahkan ke halaman detail produk yang baru saja dibuat seperti
pada gambar dibawah:
MENGHAPUS DATA
Pada bagian menampilkan data produk kita telah menyiapkan form untuk melakukan
proses penghapusan data di bagian tag td:
Form tersebut akan mengirimkan data ke route produk.destroy dengan parameter $id dari data
produk. Karena ini merupakan penghapusan data dan kita menggunakan route resource makan
kita perlu mendifinsikan _method yang akan kita gunakan yang kita simpan dalam tag input type
hidden, selanjutnya bukalah controller produkController dan modifikasi fungsi destroy() menjadi
seperti berikut:
Kemudian lakukan uji coba dengan memilih menu hapus pada salah satu data produk yang ada
pada tabel produk.
Tugas
MODUL IX
VALIDASI FORM PADA LARAVEL
(Pertemuan 14)
Tujuan :
@if ($errors->has('name_field'))
<span class="label label-danger">{{ $errors->first('name_field') }}</span>
@endif
Pada setiap tag input yang ada pada file create.blade.php di folder resources/views/produk/
script tersebut berfungsi untuk melakukan pengecekan apabila pada saat halaman dibuka apakah
$error terisi atau tidak, dan jika terisi maka error akan ditampilkan melalui tag span. Adapun
script create.blade.php pada folder resources/views/produk/ akan menjadi seperti berikur:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-head container-fluid" style="margin-top: 10px;">
<p>Tambah Data produk</p>
</div>
<div class="panel-body">
<form class="form-horizontal" action="{{ route('produk.store')
}}" method="post">
{{ csrf_field() }}
<div class="form-group">
<label class="control-label col-sm-2">Nama
Produk</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="nama">
@if ($errors->has('nama'))
<span class="label label-
danger">{{ $errors->first('nama') }}</span>
@endif
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Kategori
Produk</label>
<div class="col-sm-10">
<select class="form-control"
name="kategori">
<option value="">Pilih
Kateogri</option>
@foreach ($kategori as $k)
<option value="{{ $k->id
}}">{{ $k->nama }}</option>
@endforeach
</select>
@if ($errors->has('kategori'))
<span class="label label-
danger">{{ $errors->first('kategori') }}</span>
@endif
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Qty
Awal</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="qty">
@if ($errors->has('qty'))
<span class="label label-
danger">{{ $errors->first('qty') }}</span>
@endif
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Harga
Jual</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="jual">
@if ($errors->has('jual'))
<span class="label label-
danger">{{ $errors->first('jual') }}</span>
@endif
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Harga
Beli</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="beli">
@if ($errors->has('beli'))
<span class="label label-
danger">{{ $errors->first('beli') }}</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-
primary">Simpan</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
$pesan = [
'required' => 'Data ini Wajib Diisi !',
'numeric' => 'Mohon isi dengan angka'
];
$this->validate($request,$aturan,$pesan);
produk::create([
'nama' => $request->nama,
'id_kategori' => $request->kategori,
'qty' => $request->qty,
'harga_beli' => $request->beli,
'harga_jual' => $request->jual,
]);
return redirect()->route('produk.index');
}
Adapun penjelasan dari modifikasi script tersebut adalah pertama kita mendefinisikan
variabel aturan yang akan digunakan untuk memvalidasi fom tambah produk. Variabel tersebut
bertipe array assosiatif yang dimana index dari array tersebut merupakan name dari input type
yang ada pada form dan nilai dari masing-masing index merupakan aturan-aturan yang berlaku
untuk masing-masing input type pada form. Terdapat banyak aturan yang dapat digunakan untuk
memvalidasi form yang disediakan oleh Laravel yang dapat dilihat pada situs resmi Laravel
https://laravel.com/docs/5.4/validation.
Kemudian kita juga mendifinisikan variabel pesan yang bertipe array assosiatif yang akan
menyimpan data pesan jika salah satu aturan tidak terpenuhi. Format dari variabel pesan ini
adalah index dari array akan menjadi nama aturan yang digunakan dan nilai dari array tersebut
berisi dengan pesan yang akan muncul jika kondisi aturan tidak terpenuhi. Pada bagian akhir kita
memanggil fungsi validate() dengan urutan parameter
Sekarang lakukan uji coba pada form tambah data produk. Dengan mengosongkan semua
field atau salah satu field dan klik tombol simpan, maka halaman akan dibawa kembali ke
halaman tambah data produk dengan pesan error seperti berikut:
{{ old('name_field') }}
Script tersebut menyimpan nilai lama dari masing-masing input type yang memenuhi aturan.
Pada form tambah data produk modifikasi kembali dengan menambahkan value pada setiap input
type sehingga menjadi seperti berikut:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-head container-fluid" style="margin-top: 10px;">
<p>Tambah Data produk</p>
</div>
<div class="panel-body">
<form class="form-horizontal" action="{{ route('produk.store')
}}" method="post">
{{ csrf_field() }}
<div class="form-group">
<label class="control-label col-sm-2">Nama
Produk</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="nama" value="{{ old('nama') }}">
@if ($errors->has('nama'))
<div class="form-group">
<label class="control-label col-sm-2">Harga
Jual</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="jual" value="{{ old('jual') }}">
@if ($errors->has('jual'))
<span class="label label-
danger">{{ $errors->first('jual') }}</span>
@endif
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Harga
Beli</label>
<div class="col-sm-10">
<input type="text" class="form-control"
name="beli" value="{{ old('beli') }}">
@if ($errors->has('beli'))
<span class="label label-
danger">{{ $errors->first('beli') }}</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-
primary">Simpan</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
Kemudian lakukan uji coba dengan memberikan nilai salah pada salah satu input field dan klik
tombol simpan, maka pesan error akan dimunculkan dengan nilai lama dari form masih terdapat
pada setiap field input seperti pada contoh:
Tugas
MODUL X
MENAMPILKAN DATA DALAM GRAFIK
(Pertemuan 15)
Tujuan :
DASAR TEORI
Grafik adalah penyajian data yang terdapat dalam table yang ditampilkan ke dalam bentuk
gambar. Selain itu grafik juga dapat diartikan sebagai suatu kombinasi data-data baik berupa
angka, huruf, simbol, gambar, lambang, perkataan, lukisan, yang disajikan dalam sebuah media
dengan tujuan memberikan gambaran tentang suatu data dari penyaji materi kepada para
penerima materi dalam proses menyampaikan informasi.
Untuk membuat data grafik dari laravel kita akan menggunakan data dari tabel produk yang
telah kita buat pada latihan-latihan sebelumnya. Adapun grafik yang akan kita buat adalah grafik
yang menampilkan jumlah produk yang ada per kategori produk.
Adapun dependency yang akan kita gunakan adalah dependency dari situs
http://www.chartjs.org/. Pada situs http://www.chartjs.org/ terdapat banyak sekali pilihan
bentuk bentuk grafik, namun pada materi kali ini kita akan mencoba membuat grafik batang.
KEGIATAN PRAKTIKUM 1 MEMBUAT GRAFIK BATANG
Langkah pertama yang harus dilakukan saat membuat sebuah grafik adalah menyiapkan
data dari grafik yang akan dibuat. pada contoh kali ini kita akan menampilkan grafik pada
halaman dashboard setelah user/pengguna login. Langkah pertama yang harus dilakukan adalah
bukalah file HomeController.php yang berada pada folder app\Http\Controller dan modifikasi
fungsi index() yang ada di dalam controller tersebut menjadi seperti dibawah:
public function index()
{
$kateogri = DB::table('kategoris')->get();
$data = [];
$label = [];
bersama ke dalam view home.blade.php yang ada pada folder resources/views/ dengan bentuk
json_encode. Json ecode sendiri merupakan fungsi php yang membuat bentuk array menjadi
string dengan bentuk alaminya [value1,value,value3].
Kemudian pada file home.blade.php yang berada pada folder resources/views/ bukalah
dan tambahkan script berikut sebelum tag @endsection:
<script type="text/javascript" src="http://www.chartjs.org/dist/2.7.2/Chart.bundle.js"></script>
<script type="text/javascript" src="http://www.chartjs.org/samples/latest/utils.js"></script>
Skript tersebut merupakan script dari situs http://www.chartjs.org/ yang akan membantu kita
membuat grafik nantinya. Kemudian modifikasi koding html yang pada file home.blade.php
menjadi seperti dibawah:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Dashboard</div>
<div class="panel-body">
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
You are logged in!
</div>
<div id="container" style="width: 100%;">
<canvas id="canvas"></canvas>
</div>
</div>
</div>
</div>
</div>
@endsection
Pada script diatas kita menambahkan satu div dengan id bernilai canvas. Pada div ini nanti kita
akan menaruh grafik jumlah barang per produk. Langkah selanjutnya adalah menambahkan
javascript untuk mengambil kelas dari script yang telah kita include kan dari situs
http://www.chartjs.org/ tadi dengan kode seperti berikut:
<script type="text/javascript">
var color = Chart.helpers.color;
var barChartData = {
labels: {!! $label !!},
datasets: [{
label: 'Produk Per Kategori',
backgroundColor: color(window.chartColors.red).alpha(0.5).rgbString(),
borderColor: window.chartColors.red,
borderWidth: 1,
data: {!! $value !!},
}],
};
window.onload = function() {
var ctx = document.getElementById('canvas').getContext('2d');
window.myBar = new Chart(ctx, {
type: 'bar',
data: barChartData,
options: {
responsive: true,
legend: {
position: 'top',
},
title: {
display: true,
text: 'Grafik Data Produk'
}
}
});
};
</script>
Jika dilihat secara keseluruhan bentuk kode yang ada di dalam file home.blade.php ini adalah
seperti berikut:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Dashboard</div>
<div class="panel-body">
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
}],
};
window.onload = function() {
var ctx = document.getElementById('canvas').getContext('2d');
window.myBar = new Chart(ctx, {
type: 'bar',
data: barChartData,
options: {
responsive: true,
legend: {
position: 'top',
},
title: {
display: true,
text: 'Grafik Data Produk'
}
}
});
};
</script>
@endsection
Lalu jika kita membuka halaman dashboard setelah login maka tampilannya akan nampak seperti pada gambar
dibawah:
Tugas