Top Banner
Rekayasa Aplikasi Internet 2017 Pengembangan Aplikasi Web dengan Laravel [email protected]
212

Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Jan 30, 2018

Download

Documents

dinhcong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Rekayasa Aplikasi Internet 2017

Pengembangan Aplikasi Web dengan Laravel

[email protected]

Page 2: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Garis Besar

1. Laravel, Instalasi dan Struktur Aplikasinya

2. Pemrograman Berorientasi Obyek dengan PHP dan Laravel

3. Router dan Controller

4. View dan Blade Templating

5. Model, Migrasi dan Seeding

6. Operasi CRUD

Page 3: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

1. Laravel, Instalasi dan StrukturAplikasinya

Page 4: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Apa itu Composer?

• Composer adalah suatu software yang mengelola PHP dependencies, tepatnya suatu sistem manajemen paket dan pemuatotomatis (auto loader) paket/kelas yang dibutuhkan.

• Composer memungkinkan kita untuk mendeklarasikan pustaka(library) yang dibutuhkan oleh proyek kita dan composer akanmengelolanya (install/update) untuk kita.

Page 5: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Laravel adalah suatu framework PHP Full-Stack (sisi front-end danback-end).

• Laravel punya banyak fitur seperti manajemen sesi (session) manajemen basis data, Composer dan banyak lainnya.

• Software Framework adalah platform re-usable universal untukmengembangkan aplikasi, produk dan solusi perangkat lunak.

Apa itu Laravel?

Page 6: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Laravel mengikuti pola arsitektural model-view-controller (MVC) yang mengharuskan pemisahan antara “business logic” dari input dan bagian presentasi (tampilan, view) yang diasosiasikan dengansuatu graphical user interface (GUI).

• Pola rancangan MVC sangatlah popular dalam dunia pengembanganaplikasi web.

MVC dan Laravel

Page 7: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Model berbasiskan pada item real-world seperti orang, bank account, atau product tertentu.

• Misal Jika kita membangun suatu blog, modelnya mungkinberupa post dan comment.

• Model biasanya permanen dan akan disimpan di luar aplikasi, seringnya di dalam basis data.

• Suatu model lebih dari sekedar data; Ia memberlakukan semua aturan bisnis yang berlaku untuk data tersebut.

• Sebagai contoh, jika diskon tidak boleh diterapkan pada pesanan kurang dari Rp. 100.000, model ini akan memberlakukan batasan itu.

• Model bertindak sebagai suatu gatekeeper sekaligus data store.

Model

Page 8: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Representasi visual dari suatu model, sesuai dengan konteks yang diberikan.

• Biasanya berupa markup yang oleh framework dirender ke browser, sepertiHTML yang merepresentasikan blog post.

• Layer view bertanggungjawab untuk membangkitkan suatu user interface, normalnya berdasarkan pada data dalam model.

• Sebagai contoh, sebuah toko online akan memiliki daftar produk yang akan ditampilkan di layar katalog. Daftar ini akan dapat diakses melalui model, namun akan menjadi view (tampilan) yang mengakses daftar dari model dan memformatnya untuk pengguna akhir.

• Meskipun view dapat memberikan pengguna dengan berbagai cara untuk memasukkan data, view itu sendiri tidak pernah menangani data yang masuk. Urusan view dilaksanakan saat data akan ditampilkan.

View

Page 9: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• controller - Sang koordinator yang menyediakan link antara view danmodelnya.

• Controller bertanggungjawab memroses input, bertindak terhadapmodel, dan memutuskan tindakan apa yang harus dikerjakan, seperti merender suatu view atau mengalihkan ke halaman lain.

• Pada aplikasi blog, controller mungkin mencari komentar terbaru untuk sebuah postingan (model) dan meneruskannya ke view untuk rendering (ditampilkan ke browser).

Controller

Page 10: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Komponen Laravel: Pola MVC

Page 11: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Framework PHP Lainnya

• Ada banyak framework PHP lain:

▪Symfony▪Yii Framework▪Codeigniter▪CakePHP▪Zend Framework▪Aura …

Page 12: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Sekilas Instalasi

• Jadi, rencana umum instalasi kita adalah menginstall Laravel dancomposer pada mesin lokal.

• Kita dapat mengembangkan aplikasi di situ, menjalankan web server pada mesin lokal.

• Tampilkan file-file tersebut pada browser lokal.

Page 13: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Instalasi Laravel

• Langkah 1:

Buka www.laravel.com

• Langkah 2:

Klik pada Documentation

Page 14: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 15: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Instalasi Laravel

• Pertama, Install Composer

• Langkah 3:

Buka www.getcomposer.org

• Langkah 4:

Klik tombol Download

• Langkah 5:

Klik dua kali file yang telah didownload: Composer-Setup.exedan ikuti langkah-langkah instalasinya.

Page 16: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 17: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Kebutuhan Server Laravel 5.5

• PHP >= 7.0.0

• OpenSSL PHP Extension

• PDO PHP Extension

• Mbstring PHP Extension

• Tokenizer PHP Extension

• XML PHP Extension

Page 18: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Instalasi Laravel

• Buka Command Line (cmd)

• Run as Administrator

• Silakan pindah ke direktori dokumen web, misalnya c:\xampp\htdocs

• Jalankan composer untuk otomatisasi ketergantungan global:

composer global require "laravel/installer"

Page 19: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Ketergantungan PHP

composer global require "laravel/installer“

• Itu mengaktifkan PHP dependency. Diperlukan beberapa menituntuk menginstall PHP dependency.

• Kemudian composer akan membangkitkan “Autoload Files”.

Page 20: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Membuat Proyek Baru

• Langkah berikutnya adalah membuat proyek baru.

• Perintah di bawah ini dapat digunakan untuk membuat proyek laravel.

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

Sebutkan nama proyek yang akan dibuat, misalnya rai2017

Page 21: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 22: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 23: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Server Pengembangan Lokal

• Setelah instalasi suatu proyek baru, Laravel membuatkan key untukaplikasi tersebut.

• Untuk memeriksa apakah Laravel sudah terinstall dengan benar, gunakan perintah php artisan serve.

php artisan serve

• Perintah ini akan memulai suatu server untuk pengembanganaplikasi PHP pada URL http://localhost:8000

Page 24: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 25: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Struktur File dariLaravel

Page 26: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Struktur File dari Laravel (1/3)

• app: direktori yang mengandung kerja utama aplikasi kita, inilahfolder dimana kita menempatkan semua model, controller dankelas lainnya.

• bootstrap: digunakan untuk mem-boostrap / men-startup Laravel.

• config: dimana konfigurasi dari aplikasi berada.

• databases: dimana migrasi dan seed disimpan.

• public: tempat meletakkan bagian dari aplikasi yang dapat diaksesoleh publik. Direktori ini juga menjadi rumah bagi aset lain sepertiimages, JavaScript dan CSS.

Page 27: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Struktur File dari Laravel (2/3)

• resource: inilah dimana semua view berada. Banyak file yang dapatdilihat pengguna front-end, seolah struktur dari aplikasi, terlihat di dalam folder ini.

• storage: dimana semua file cache dan log berada. Semuanya built-in dengan Laravel misalnya log error dan access.

• test: tergantung, jika anda menggunakan jenis framework unit testing, maka kita dapat meletakkan semua test dalam folder ini.

• vendor: dimana semua pustaka pihak ketiga berada, paket composer di install di sini.

Page 28: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Struktur File dari Laravel (3/3)

• File Composer.json: file untuk menentukan paket composer apa yang akan dimasukkan ke dalam aplikasi.

• File .env: file yang berisi konfigurasi koneksi ke suatudatabase dan beberapa konfigurasi lain.

• Routes: Di dalam folder inilah semua rute untuk aplikasiberada: web.php, api.php, console.php dan channels.php

• File Web.php: file dimana di dalamnya semua rute(standard) didefinisikan

Page 29: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Laragon

Page 30: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Download

Page 31: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Zeal

Page 32: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Membuat Proyek di Laragon

Page 33: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Vue.JS

Page 34: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

PostgreSQL

Page 35: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

2. Pemrograman BerorientasiObyek dengan PHP dan Laravel

Page 36: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Obyektif

MVC sebagaimana yang dianut oleh Laravel adalah OO, sehingga…

• Frameworks Web & konsep pentingnya

• Contoh Framework web

• Pola rancangan perangkat lunak Model-View-Controller

• Perbandingan procedural vs OO

• Aspek dari OO dalam PHP • Kelas Classes • Properti Properties • Metode Methods • Inheritance • Overriding

Page 37: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Framework Web

• Mendukung dan memudahkan pengembangan• dynamic websites • web applications • web services

• Menyederhanakan tugas-tugas pengembangan umum seperti• AJAX • caching • data validation • database access • debugging • error handling • security • session management • templating • testing • URL mapping • user management

• Memperkenalkan code reuse (penggunaan ulang kode aplikasi)

• Frameworks merupakan contoh dari rancangan interface, bukan rancangan implementasi.

Page 38: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Beberapa Framework Web

• ASP.NET (terutama menggunakan C# atau VB, sedikit J#)

• Flask dan Django (Python)

• Drupal (CMS sebagai framework dan Drupal 8 menggunakan komponensymfony)

• Ruby

• WordPress??????

• Laravel, Yii, CodeIgniter, CakePHP, Zend, Symfony adalah beberapaframework PHP

• Ada banyak (ratusan?) framework tersebar mulai ASP.NET, C++, Java, Perl, PHP, Python s.d Ruby, dll.

Lihat di http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks

Page 39: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Beberapa Framework Web

Page 40: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Aplikasi Itu CRUD

• Persistent storage membutuhkan CRUD • Create

• Read (Retrieve)

• Update

• Destroy (Delete)

• Dalam istilah SQL: INSERT, SELECT, UPDATE & DELETE

• Program komputer sedikit banyak tapi CRUD

• Sistem informasi berbasis kertas atau computer adalah CRUD

• Arsitektur software MVC mencoba untuk memudahkan ataumengotomatiskan implementasi CRUD

Page 41: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Pola Rancangan Software Model-View-Controller

• Model • Merepresentasikan perilaku dan data dari aplikasi• Menyediakan informasi untuk views (R dari CRUD) • Mengubah status ketika diinstruksikan oleh controller (CUD atau CRUD) • Mengimplementasikan CRUD

• View • Membawa (mengubah) model ke dalam antarmuka pengguna (user interface)• Suatu model dapat mempunyai view berbeda untuk tujuan berbeda• Views menerjemahkan user interface ke CRUD

• Controller • Mengambil input dari pengguna• Menginisiasi request ke model • Menginstruksikan view untuk menerjemahan response dari model • Controller menginisiasi CRUD

Page 42: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Mengapa MVC?

• Aplikasi menjadi lebih maintainable

• Modular

• Pengembangan Cerdas (Agile)

Page 43: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

PHP Prosedural vs OO

• PHP Prosedural• Sebagian besar tutorial pengantar adalah prosedural• Banyak materi kuliah yang berkaitan dengan PHP, biasanya prosedural• Quick(?) dan Dirty! • Kode procedural adalah linier atau sequensial• Skrip kecil• Sulit untuk di-maintain • Coding untuk implementasi, sulit menerapkan reuse

• PHP Berorientasi Obyek• Laravel adalah OO • OO adalah modular • Aplikasi besar• Aplikasi enterprise • Coding untuk interface, mudah dalam code reuse

Page 44: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Kelas adalah Template

<?php class SimpleClass {

// deklarasi propertipublic $var = ‘suatu nilai default'; // deklarasi metodepublic function displayVar() {

echo $this->var; }

}

?>

Perhatikan pemanfaatan dari pseudo-variable $this

Page 45: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Obyek adalah Instance

<?php

$a = new SimpleClass();

$b = new SimpleClass();

$c = new SimpleClass();

?>

Page 46: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Properti Mendeskripsikan Instance

<?php class SimpleClass {

// deklarasi propertipublic $var = 'a default value'; // deklarasi metodepublic function displayVar() {

echo $this->var; }

} $a = new SimpleClass(); $a->var = "qwerty"; // lewatkan ke$whatever = $a->var; // ambil dari

?>

Dapat memberi ke dan menerima dari suatu properti dengan notasi ->.

Page 47: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Metode adalah Tindakan atau Operasi

<?php class SimpleClass {

// property declaration public $var = 'a default value'; // method declaration public function displayVar() {

echo $this->var; }

} $a = new SimpleClass(); $a->displayVar(); // the line above is equivalent to the line below echo $a->var;

?>

Dapat menggunakan metode dengan notasi ->.

Page 48: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Menurunkan dan Mengubah Metode

<?php class foo {

public function printItem($string) { echo 'Foo: ' . $string . PHP_EOL; } public function printPHP() { echo 'PHP is great.' . PHP_EOL; }

}

class bar extends foo { //bar turunan dari foopublic function printItem($string) { echo 'Bar: ' . $string . PHP_EOL; }

}

$foo = new foo(); $bar = new bar(); $foo->printItem('baz’); // Output: 'Foo: baz' $foo->printPHP(); // Output: 'PHP is great' $bar->printItem('baz’); // Output: 'Bar: baz' $bar->printPHP(); // Output: 'PHP is great'

?>

Page 49: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Operator Resolusi Lingkup (::)

• Operator resolusi lingkup (berbentuk double colon) adalah suatutoken yang memungkin akses ke properti atau metode static, constant dan override dari suatu kelas.

• Sering digunakan untuk mengakse metode dari kelas yang diimporttanpa pembuatan instance dari kelas tersebut.

use Illuminate\Support\Facades\Cache;

Route::get('/cache', function () {

return Cache::get('key');

});

Page 50: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Lingkup Variabel dalam PHP

• Lingkup variabel adalah konsteks dimana variabel itu didefinisikan<?php $a = 1; include 'b.inc'; ?>

• Variabel $a akan tersedia di dalam skrip b.inc yang di-include-kan.<?php

$a = 1; /* lingkup global */ function test() {

echo $a; /* merujuk ke variabel lingkup lokal */ } test();

?>

• Skrip ini tidak mengeluarkan apapun karena pernyataan echo mengacu ke versilokal dari variabel $a dan belum diberikan nilai dalam lingkup ini.

http://php.net/manual/en/language.variables.scope.php <-- Manual PHP!

Page 51: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Menggunakan global

<?php $a = 1; $b = 2; function Sum() {

global $a, $b; $b = $a + $b;

}

Sum(); echo $b;

?>

• Skrip akan mengeluarkan 3. Dengan mendeklarasikan $a dan $b global di dalamfungsi, semua referensi ke salah satu variabel akan mengacu ke versi globalnya.

http://php.net/manual/en/language.variables.scope.php <-- lihat manual PHP

Page 52: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Menggunakan $GLOBALS Bukan global

• Cara kedua untuk mengakses variabel dari lingkup global adalah menggunakanarray $GLOBALS khusus yang sudah didefinisikan PHP. Contoh sebelumnya dapatditulis ulang menjadi: <?php

$a = 1; $b = 2; function Sum() {

$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } Sum(); echo $b;

?>

• Array $GLOBALS adalah asosiatif dengan nama variabel global menjadi key dan isidari variabel tersebut sebagai elemen value-nya. Perhatikan bagaimana$GLOBALS ada di lingkup mana pun, ini karena $GLOBALS bersifat superglobal.

http://php.net/manual/en/language.variables.scope.php <-- Manual PHP!

Page 53: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Variabel Statis

• Suatu variabel statik hadir hanya dalam lingkup lokal fungsi, tetapi tidakkehilangan nilainya saat eksekusi program meninggalkan skop ini.

• Fungsi sebelah kiri tak jelas manfaatnya karena setiap kali dipanggil iamengubah $a menjadi 0 dan mencetak 0.

• Fungsi sisi kanan, $a diinisiasi hanya pada panggilan pertama dan setiapkali dipanggil fungsi test() akan mencetak nilai dari $a dan menaikkannya.

<?php // useless function (local) function test() {

$a = 0; echo $a; $a++;

} ?>

<?php // useful function (static) function test() {

static $a = 0; echo $a; $a++;

} ?>

Page 54: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Bacaan Lanjutan: Dokumentasi dan Tutorial

• http://en.wikipedia.org/wiki/Model-View-Controller

• http://en.wikipedia.org/wiki/Create,_read,_update_and_delete

• http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks

• http://www.php.net/manual/en/language.oop5.php (bahasan tentang OOP)

• http://www.killerphp.com/tutorials/object-oriented-php/ (website tutorial, tersedia pula bentuk pdf dan video)

• https://laravel.com/docs/5.4

• https://getcomposer.org/

• https://laracasts.com/ - belajar dari video

• https://laravel.com/docs/5.4/artisan

Page 55: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

3. Laravel: Router dan Controller

Page 56: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

ROUTES

Page 57: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Setup Routing

• Routing memungkinkan kita membuat path URL sendiri. Berdasarkanpada path itulah eksekusi suatu closure atau controller diarahkan!

• Pembuatan Rute:

• Mendefinisikan suatu rute: panggil nama statis Route:: diikutidengan post atau get (metode atau aksi HTTP, ada juga put dandelete).

• Tentukan path (setelah URL root) yang nantinya akan dicocokkandan memicu pekerjaan lanjutan (ditetapkan dalam closure ataucontroller).

• Contoh pemanggilan: localhost:8080/hello (memanggil rute hello)

Page 58: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Bagaimana Caranya?

• Buka file routesweb.php. Di sinilah semua rute dari aplikasiditulis.

• Perhatikan, di sana sudah ada satu rute get, hanya /, default, rutedari root (home, beranda) dari aplikasi.

• Coba tambahkan rute hello ke dalam file ini:

Route::get(‘hello’, function(){echo “Hello all, welcome to RAI 2017 class…”;

});

• Panggil di browser: localhost:8000/hello

Page 59: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Misalnya kita ingin melewatkan parameter nama

Route::get(‘hello/{nama}’, function($nama){

echo “Hello ” . $nama . “, apa kabar?”;

});

• localhost:8000/hello/sholihah

• Katakanlah ada suatu ID, kita mungkin dapat mengambil informasitertentu dari dalam database berdasarkan ID ini.

Mengirimkan Parameter ke Rute

Page 60: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Parameter Rute Dasar

Route::get(‘user/{id}’, function($id) {

return ‘User ‘ . $id;

});

Catatan: Parameter rute tidak boleh mengandung karakter -. Gunakan underscore (_) sebagai gantinya.

Parameter Rute

Page 61: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Parameter Rute Opsional

Route::get(‘user/{nama?}’, function($nama = null) {

return $nama;

});

Parameter Rute

Page 62: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Parameter Rute Opsional dengan Nilai Default

Route::get(‘user/{nama?}’, function($nama = ‘Joko’) {

return $nama;

});

Parameter Route

Page 63: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Jenis Route

• Ada empat jenis dasar dari rute, sesuai dengan metode HTTP yang umum diterapkan.

• Route::post()

• Route::get()

• Route::put()

• Route::delete()

Page 64: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Route::post()

• Rute post digunakan untuk membuat suatu item baru.

• Misal kita membuatkan suatu rute bernama ‘test’.

Route::post(‘test’, function(){

echo “POSTED”;

});

• Sehingga jika dapat memanggilnya: http://localhost:8000/test

Page 65: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Route::get()

• Rute get membaca atau mengambil suatu item.

Route::get(‘test’, function(){

echo “GET”;

});

• Digunakan saat pengguna mengirim request tanpa data atau men-submit data dari suatu form.

Page 66: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Route::get()

• Rute get membaca suatu item

Route::get(‘test’, function(){

echo ‘<form action=“test” method=“post”>’;

echo ‘<input type=“submit” value=“submit” >’;

echo ‘<input type=‘hidden’ name=‘_token’ value=“’ . csrf_token() . ’” >’;

echo ‘<input type=‘hidden’ name=‘_method’ value=“PUT/DELETE” >’;

echo ‘</form>’;

});

• Digunakan saat pengguna mengirim request tanpa data atau men-submit data dari suatu form.

Hidden input memanggiltoken, ini cara pengamananform, builtin dalam Laravel

Value akan menjadi fungsi helper

Page 67: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Route::put()

• Rute put mengupdate suatu item.

Route::put(‘test’, function(){

echo “PUT”;

});

Page 68: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Route::delete()

• Rute delete menghapus suatu item.

Route::delete(‘test’, function(){

echo “DELETED”;

})

Page 69: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Route Closure

• Sebelumnya, saat membuat suatu rute get baru, misalnya test123. kita memanfaatkan closure untuk mewujudkan apa yang diinginkandengan rute tersebut.

• Kita juga dapat menggunakan controller, misalnya TestControllerdan metode tujuannya.

Route::get(‘test123’, ‘TestController@index’);

• Tidak perlu semua kode ditulis di dalam rute. Cukup sebutkan suatucontroller dan nama metode di dalamnya yang harus dijalankan saatrute ini dipanggil.

Page 70: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Route Closure

Route::get(‘test123’, function(){

echo “test”;

})

• Dengan pemanfaatan controller, berubah menjadi:

Route::get(‘test123’, ‘TestController@index’);

Page 71: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Laravel memudahkan proteksi aplikasi dari cross-site request forgeries(pemalsuan permintaan lintas lokasi), salah satu malicious exploitdimana perintah yang tidak sah dikerjakan atas nama pengguna yang terotentikasi.

• Laravel secara otomatis membangkitkan suatu “token” CSRF untuksetiap sesi pengguna aktif yang dikelola oleh aplikasi. Token inidigunakan untuk menverifikasi bahwa pengguna terotentikasi adalahyang sesungguhnya membuat request ke aplikasi.

Proteksi CSRF

Page 72: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Masukkan Token CSRF ke dalam suatu form (coba satu dari 3 cara ini)

<input type="hidden" name="_token"

value="<?php echo csrf_token(); ?>">

<input type=‘hidden’ name=‘_token’

value=“’ . csrf_token() . ’” >’;

<input type="hidden" name="_token"

value="{{ csrf_token() }}">

Proteksi CSRF

Page 73: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Form HTML tidak mendukung metode PUT, POST atau DELETE. Sehingga ketika mendefinisikan rute PUT, POST atau DELETE yang dipanggil dari suatu form HTML, perlu ditambahkan suatu field _method tersembunyi ke dalam form tersebut.

• Nilai yang dikirim dengan field _method akan digunakan sebagaimetode request HTTP.

• Sebagai contoh:<form action="/foo/bar" method="POST">

<input type="hidden" name="_method" value="PUT/DELETE"> <input type="hidden" name="_token"

value="<?php echo csrf_token(); ?>"></form>

Metode di dalam Form

Page 74: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Rute bernama memudahkan pembangkitan URL atau redirect ke rute khusus. Nama untuk suatu rute ditetapkan sebagai key dari array:

Route::get('user/profile', ['as' => 'profile', function() { //

}]);

• Dapat pula ditentukan nama-nama rute untuk aksi controller:

Route::get('user/profile', [ 'as' => 'profile', 'uses’ =>'UserController@showProfile' ]);

• Metode currentRouteName mengembalikan nama dari rute yang menanganicurrent request:

$name = Route::currentRouteName();

Rute Bernama

Page 75: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Perintah Route

php artisan route:list

• Perintah ini akan menampilkan semua rute dari aplikasi.

Page 76: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

CONTROLLER

Page 77: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Controller

• Controller: Koordinator yang menyediakan link antara view danmodel.

• Controller bertanggungjawab untuk pemrosesan input, memanggilatau memerintahkan model, dan menentukan aksi apa yang sebaiknya dikerjakan, seperti menampilkan suatu view ataumeredirectnya ke halaman lain.

• Pada aplikasi blog misalnya, controller mungkin mencari komentarterakhir untuk suatu post (model) dan mengirimnya ke view untukditampilkan.

Page 78: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Controller di Laravel

• Dalam Laravel, semua Controllers disimpan dalam direktoriaapHttpControllers.

• Laravel menyediakan suatu controller dasar bernama Controller.php

• Semua controller Laravel harus meng-extend controller tersebut.

• Di dalam folder Controller, dapat dibuat folder lainnya agar beberapa controller tertata lebih baik.

Page 79: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Controller di Laravel

• Buka direktori appHttpControllersAuth

• Di dalam folder Auth, ada file bernama LoginController.php (iniadalah suatu controller otentikasi yang mengotentikasi penggunaexisting juga menangani registrasi pengguna)

Page 80: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Controller di Laravel

• Kita menuliskan sebagian besar kode aplikasi di dalam controller. Controller berurusan dengan pemrosesan data dan kendali aplikasi.

• Aplikasi mendapatkan route, kemudian menuju controller.

• Controller harus menentukan bagaimana menyelesaikan tugas. Jikaperlu data (dari database) maka panggil atau eksekusi modelnya.

Page 81: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Controller di Laravel

• Contoh: Validasi form:

• Mungkin diperlukan penggabungan beberapa string dll.

• Semua jenis pemrosesan data (logika penanganan data) didefinisikan di dalam Controller.

Page 82: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Pembuatan Controller

• Untuk membuat suatu controller buka terminal cmd dan jalankanperintah:

php artisan make:controller PagesController

• Perintah ini akan secara otomatis membuat controller bernamaPagesController di dalam folder appHttpControllers

Page 83: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 84: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 85: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Pembuatan Controller

• Telah dibuat PagesController untuk menangani semua halaman web.

• Kata Controller harus diletakkan di akhir nama controller dimulaidengan huruf besar C.

• Namespace hadir di dalam semua controller.

Page 86: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Pembuatan Controller

• Perintah untuk membuat controller

php artisan make:controller PagesController

• Perintah untuk membuat controller CRUD

php artisan make:controller PostController --resource

Page 87: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Namespace

• Namespace adalah suatu container atau kotak kecil.

• Apa yang dilakukannya?, hanya mengatakan bahwa kita berada didalam folder ini.

• Kita dapat bergerak dalam folder ini namun tidak dapat meninggalkannya.

Page 88: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Namespace App

• Root directory dari instalasi awal Laravel berisi beberapa folder.

• Direktori App : Aplikasi yang dibangun hidup dalam direktori app. Secara default, direktori ini di-namespace-kan di bawah App dandimuat otomatis oleh composer.

• Defaultnya, namespace dari aplikasi adalah App. Namunnamespace ini dapat diubah.

Page 89: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Fungsi Controller

• Di dalam Controller didefinisikan fungsi-fungsi (atau metode)

• Nama dari fungsi dimulai dengan aksi get, post, put atau delete. Karena itulah kita membuat fungsi getIndex()

• Setelah itu beritahukan route untuk menunjuk ke Controller ini, danmenggunakan fungsi pada Controller ini untuk memroses data.

Route::get(‘contact’, ‘PagesController@getContact’);

Page 90: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Fungsi Controller

• Sekarang di dalam PagesController didefinisikan 3 fungsi:

<?php

namespace App\Http\Controllers;

class PagesController extends Controller{

public function getIndex() { }

public function getAbout() { }

public function getContact() { }

}

Page 91: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

getIndex()

public function getIndex() {

return view(‘pages/welcome’);

return view(‘pages.welcome’);

}

• Lebih baik menggunakan (.), lebih object oriented.

• Fungsi ini akan memanggil halaman welcome.blade.php yang tersimpan di dalam folder pages di dalam folder view.

Page 92: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

getAbout()

• Melewatkan data dari controller ke view.

• Tugasnya adalah menentukan first name dan last name, kemudianmelewatkan nama lengkapnya ke dalam view.

• public function getAbout() {

$first = “Alex”;

$last = “John”;

$full = $first . “ ” . $last;

return view(‘pages.about’)->with(“fullname”, “$full”);

}

Page 93: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Melewatkan Data: with()

• Metode with(), memerlukan dua argumen.

• Argumen pertama adalah nama dari variable yang hendak diakses di dalam view, dalam contoh memanggilnya fullname.

• Argumen kedua adalah variabel yang dideskripsikan dalam fungsi.

with(“fullname”, “$full”);

• Buka resourceviewspagesabout.blade.php dan sisipkan kode{{ $fullname }} untuk menempatkan nilai dari variabel tersebut.

Page 94: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Melewatkan Data: Awalan Huruf Besar

• Cara lain (lebih mudah?) untuk melewatkan data ke view dari controller.

return view('pages.about’)->withFullname($full);

• Perhatikan huruf besar F (Fullname). Tidak perlu memisahkan fungsidengan variabel. Namun variabel fullname dalam view tetap selaludimulai dengan huruf kecil ($fullname).

Page 95: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Melewatkan Array

• Lewatkan suatu array ke View.

public function getAbout() {

$first = "Alex";

$last = "Doe";

$full = $first . " " . $last;

$email = "[email protected]";

$data = []; // empty array

$data['email'] = $email;

$data['fullname'] = $full;

return view('pages.about')->withData($data);

}

Page 96: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 97: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Melewatkan Array

• Sekarang buka resourceviewspagesabout.blade.phpdan masukkan kode berikut.

<div>About: {{ $data[‘fullname’] }} </div>

<p>Email me at: {{ $data[‘email’] }}</p>

Page 98: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 99: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

4. Laravel: View dan Blade Templating

Page 100: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• View adalah tempat meletakkan HTML (termasuk CSS dan JS) dancontent (isi) untuk ditampilkan kepada pengguna.

• Model digunakan untuk berinteraksi dengan database.

• Controller, berisi banyak pengaturan kerja (logika) aplikasi.

• Route, menyimpan URL dari aplikasi, diarahkan ke controller (atauclosure).

View, Model, Controller dan Route

Page 101: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• View mengandung rancangan (CSS dan JS) dan HTML yang akanditampilkan kepada pengguna.

• Dalam Laravel, semua view disimpan dalam folder views di bawah folder resources.

• Folder tambahan dapat dibuat di dalam folder views untukpengelolaan view yang lebih baik, terutama untuk aplikasi besardan mempunyai banyak level view.

View

Page 102: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Secara default, Laravel menyediakan file welcome.blade.php

• View ini hanya mengandung HTML (CSS + JavaScript + Bootstrap)sederhana + Blade

• Kita umumnya menuliskan plain HTML di dalam view, tetapi adapilihan untuk menambahkan blade (template khusus Laravel).

View

Page 103: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Catatan

• Kapanpun kita membuat suatu file dalam view, kita selalumemperoleh blade.php di ujungnya.

• Contoh:

welcome.blade.php (welcome adalah nama file sebenarnya)

about.blade.php

Page 104: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Halaman di dalam View

• Kita membuat halaman welcome, about, dan contact di dalam views.

welcome.blade.php,

about.blade.php

contact.blade.php

Page 105: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Layout Laravel dengan Blade

• Blade merupakan templating engine untuk Laravel.

• Memungkinkan developer meletakkan PHP di dalam kode HTML.

• Laravel pada dasarnya menerjemahkannya atau mengkoversikannyake dalam PHP.

Page 106: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Fungsi Blade

• Mengorganisir view menjadi lebih baik. Manfaat yang diperolehdari fungsi-fungsi blade :

• Layout

• Partial

Page 107: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Layout

• Layout adalah rancangan (design) yang dengannya developer dapatmemisahkan bagian berulang dari suatu website.

• Contoh:• Semua halaman pada suatu web site berbagi-pakai navigasi yang sama.

• Layout adalah design untuk mencegah penulisan kode sama di setiaphalaman.

• Design dapat diisi kode yang akan dipakai bersama dan hanya diletakkan di satu tempat (satu file blade).

• Keuntungan: kapanpun dijumpai bug, developer hanya perlumembetulkannya di satu tempat, hanya sekali kerja.

Page 108: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Layout

• Buat suatu file bernama main.blade.php di dalam views.

• Di dalamnya, letakkan semua “elemen berulang” yang digunakan di setiap halaman, hanya ke dalam halaman tunggal ini.

• Di dalam halaman welcome.blade.php:

!Doctype, head, navigation, footer

merupakan bagian yang juga hadir di halaman lain, sehinggabagian-bagian itu diletakkan dalam main.blade.php

Page 109: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 110: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Layout

• Blade diawali dengan tanda @. Itu mengisyaratkan Laravel bahwakode yang ditulis adalah blade bukan HTML.

• @yield(‘content’)

• Berguna untuk memanggil suatu layout.

• content merupakan title yang diberikan ke blade ini, ini hanyacontainer yang dibiarkan kosong. Nanti content tersebut akanterisi secara dinamis.

Page 111: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Layout

• Buka main.blade.php, tambahkan kode:

@yield(‘content’)

ini adalah cara memanggil suatu layout.

• Sekarang buka welcome.blade.php dan tambahkan kode blade ini kedalamnya

@extends(‘main’)

@section(‘content’) // Kode HTML untuk mengisi ‘content’

@endsection

Page 112: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 113: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Layout

• Mungkin terdapat file css khusus, dan kita tidak ingin memuatnyapada setiap halaman. Hal yang perlu dilakukan adalah membuatsection khusus di dalam welcome.blade.php

@section(‘stylesheets’)

<link rel=“stylesheet”

href=“main.css”

type=“text/css”

/>

@endsecion

Page 114: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 115: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Layout

• Kita mungkin perlu menambahkan kode atau file JavaScript

@section(‘scripts’)

<script src=”js/scripts.js”></script> ATAU

<script>window.confirm(‘I loaded up some JS’);

</script>

@endsection

Page 116: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Partial

• Partial dapat menangani content lebih lanjut, dapat digunakanuntuk kode berulang (repetitive code) dan pengelolaannya.

• Melalui partial kita dapat mengekstrak file kode ke dalam filenyasendiri.

• Contoh: Kita dapat mengambil navigasi, mengekstraknya dankemudian jika kita perlu lakukan perubahan terhadap navigasitersebut. Kita membuka navigation’s partial.

Page 117: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Membuat Partial

• Dalam resourcesviews buat suatu foler baru bernama partial.

• Saat membuat partial, biasanya diberikan tanda _(underscore) sebelum nama partial.

• Contoh: _head.blade.php

• Buka main.blade.php, sampai dengan tag body, cut dan paste kedalam _head.blade.php

• dan dalam main.blade.php kita masukkan kode ini

@include(‘_head’)

Page 118: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 119: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 120: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Sintaks Blade

• Sintaks PHP:

<?php foreach($customers as $customer) ?>

• Sintaks Blade:

@foreach($customers as $customer)

@endforeach

Page 121: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Sintaks PHP:

<p><?php $customer->cname; ?></p>

• Sintaks Blade:

<p>{{ $customer->cname }}</p>

Sintaks Blade

Page 122: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Sintaks Blade

• Sintaks PHP

• <?php if(true): ?>

<?php echo ‘hello’; ?>

<?php endif; ?>

• Sintaks Blade

@if(true)

{{ ‘hello’ }}

@endif

Anda dapat membaca banyak mengenai sintaks ini di laravel.com

Page 123: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

5. Laravel: Model, Migrasi dan Seeding

Page 124: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Model didasarkan pada item dunia nyata seperti orang, akun bank atau produk.

• Contoh: Jika anda akan membangun suatu blog, model dapatberupa post (postingan) dan comment (komentar).

• Model biasanya permanen dan disimpan di luar aplikasi, seringnya di dalam suatu database.

• Model lebih dari sekedar data; model menjalankan semua business rules yang berlaku terhadap data itu.

• Sebagai contoh, jika suatu diskon tidak akan diberlakukan untukpesanan kurang dari Rp. 100.000, model akan menjalankan batasantersebut.

• Model bertindak sebagai gatekeeper sekaligus data store.

Model

Page 125: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Dalam Laravel, semua model disimpan di dalam folder app.

• User.php , merupakan model pertama, diberikan secara default oleh Laravel setelah instalasinya berhasil.

• Model ini digunakan untuk menangani otentikasi, login dan logout pengguna.

• Hampir semua aplikasi memerlukan model User.

Model Laravel

Page 126: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Dalam Laravel, ada konvensi pengaturan nama model.

• Nama model harus menggunaan huruf abjad dengan hurufpertama adalah huruf BESAR.

• Contoh: dalam situs web Blog, kita perlu model yang men-track semua posting. Sehingga model yang dibuat diberi nama Post.php

Catatan

Page 127: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Dalam arsitektur MVC, model berkaitan erat dengan tabel.

• Model digunakan untuk mendapatkan informasi dan mengelolainformasi di dalam tabel

• Kita biasanya mempunyai model untuk setiap tabel di dalamdatabase. Satu model untuk masing-masing tabel.

• Untuk tabel posts kita punya model bernama Post.

Model

Page 128: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Migrasi adalah cara di dalam Laravel untuk secara aktual membuattabel database bagi developer.

• Dengan migrasi, kita membuat dan mengupdate tabel-tabeldatabase melalui framework.

• Banyak sekali waktu yang dihemat dan juga sangat berguna untukmemulai sharing kode dengan lainnya.

• Migrasi disimpan di dalam folder databasemigrations

Migrasi

Page 129: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Untuk membuat suatu model, tuliskan perintah berikut di Terminal:

php artisan make:model Post

• Untuk membuat model sekaligus dengan migrasinya, ketikkanperintah:

php artisan make:model Post --migration

Perintah artisan make:

Page 130: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Buka file migrasi, misalnya:

2014_10_12_000000_create_user_table.php

di sana ada 2 fungsi: up() dan down().

• up() digunakan untuk membuat (create) tabel database.

• down() akan menghapus (delete/drop) tabel.

Migrasi

Page 131: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Fungsi default up(), selanjutnya digunakan untuk membuat kolom-kolom dalam tabel (setelah modifikasi).

public function up(){Schema::create('comments', function (Blueprint $table) {

$tableincrements('id');$tabletimestamps();

});}

• Tambahkan kolom-kolom lainnya

• timestamps() membuat dua kolom: created_at dan updated_at

Metode Up()

Page 132: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Misalya ditambahkan dua kolom (field) bernama title dan body.

$table -> string(‘title’);

$table -> text(‘body’);

• Tambahan nullable() digunakan untuk memungkinkan suatu kolommenerima nilai null.

$table -> string(‘title’) -> nullable()

(berarti title bersifat opsional, tidak error jika field title tidakdiberikan nilai tertentu)

Penambahan Field dalam Tabel

string dan text adalah tipedata dari kolom yang dibuat

Page 133: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Menambahkan Field ke dalam Tabel

Page 134: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

$table -> string(‘title’) -> default(‘No Title Given’)

• Itu berarti jika field title tidak diberikan nilai tertentu maka nilaidefaultnya adalah ‘No Title Given’

• Unsigned() , menunjukkan bahwa nilai negatif tidak dibolehkan, haruspositif.

• Apa saja tipe data yang tersedia? Akses laravel.com, klikdocumentation dan kemudian klik migration.

Tipe Data Field

Page 135: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Tipe Data Field (Kolom)

$table->bigInteger('votes'); BIGINT equivalent for the database.

$table->binary('data'); BLOB equivalent for the database.

$table->boolean('confirmed'); BOOLEAN equivalent for the database.

$table->char('name', 4); CHAR equivalent with a length.

$table->date('created_at'); DATE equivalent for the database.

$table->dateTime('created_at'); DATETIME equivalent for the database.

$table->decimal('amount', 5, 2); DECIMAL equivalent with a precision and scale.

$table->double('column', 15, 8);DOUBLE equivalent with precision, 15 digits in total and 8 after the decimal point.

$table->enum('choices', ['foo', 'bar']); ENUM equivalent for the database.

$table->float('amount', 8, 2);FLOAT equivalent for the database, 8 digits in total and 2 after the decimal point.

$table->increments('id'); Incrementing ID (primary key) using a "UNSIGNED INTEGER" equivalent.

$table->integer('votes'); INTEGER equivalent for the database.

Page 136: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Down() adalah fungsi dalam migrasi untuk menghapus (delete/drop) suatu tabel

Metode down()

Page 137: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Buka file .env dalam direktori root. Ubah:

• Nama DB_DATABASE sama dengan laravel_db

• DB_USERNAME bernilai root

• DB_PASSWORD bernilai blank

Koneksi ke Database

Page 138: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Buka file .env dalam direktori root, berikan nama database, username dan password MySQL di dalamnya.

• Untuk membuat tabel, jalankan perintah migrasi berikut:

php artisan migrate

Koneksi ke Database

Page 139: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Untuk mengganti-nama kolom, kita dapat menggunakan metoderenameColumn pada Schema builder. Sebelum mengganti namakolom, pastikan kita sudah menambahkan

doctrine/ dbal dependency

ke dalam file composer.json:

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

$tablerenameColumn('from', 'to');

});

Mengganti Nama Field

Page 140: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Untuk menghapus suatu kolom, gunakan metode dropColumn padaSchema builder.

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

$tabledropColumn(‘votes’);

});

Menghapus Field

Page 141: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Menggunakan metode dropColumn tetapi banyak nama kolom yang dijadikan parameternya:

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

$tabledropColumn(‘votes’,’avatar’,’location’);

});

Menghapus Banyak Field

Page 142: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Sebelum menghapus kolom dari suatu database, kita perlumenambahkan

doctrine/dbal dependency

ke dalam file composer.json

• Jalankan perintah

composer update

di Command line atau Terminal untuk menginstall library.

Catatan

Page 143: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Jenis Indeks yang Tersedia

Command Description

$table->primary('id'); Add a primary key.

$table->primary(['first', 'last']); Add composite keys.

$table->unique('email'); Add a unique index.

$table->unique('state', 'my_index_name'); Add a custom index name.

$table->unique(['first', 'last']); Add a composite unique index.

$table->index('state'); Add a basic index.

Page 144: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Untuk menghapus suatu index, kita harus menentukan nama index. Secaradefault, Laravel secara otomatis memberikan nama yang reasonable untukindexes. Simpelnya, gabungkan nama tabel, nama kolom yang diindeks dantipe indeksnya. Ini adalah beberapa contoh:

Menghapus Indeks

Command Description

$table->dropPrimary('users_id_primary'); Drop a primary key from the "users" table.

$table->dropUnique('users_email_unique'); Drop a unique index from the "users" table.

$table->dropIndex('geo_state_index'); Drop a basic index from the "geo" table.

Schema::table('geo', function (Blueprint $table) { $table->dropIndex(['state']); // Drops index 'geo_state_index’

});

Page 145: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Laravel juga menyediakan dukungan untuk pembuatan foreign key constraints, yang digunakan untuk memaksakan referential integrity pada tingkatan database. Sebagai contoh, kita dapat mendefinisikankolom user_id pada tabel posts yang merujuk kolom id padatabel users:

Membuat Foreign Key

Schema::table('posts', function (Blueprint $table) {$table->integer('user_id')->unsigned();$table->foreign('user_id')->references('id')->on('users’);

});

Page 146: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Menghapus Foreign Key

• Kita dapat menentukan tindakan untuk properti "on delete" dan "on update" dari constraint:

$table->foreign('user_id’)->references('id')->on('users’)->onDelete('cascade');

Untuk menghapus foreign key, gunakan metode dropForeign. Foreign key constraints menggunakan konvensi nama seperti indeks: gabungan nama tabeldan kolom, kemudian akhiri dengan _foreign:

$table->dropForeign('posts_user_id_foreign');

Atau dengan perintah: $table->dropForeign(['user_id']);

Page 147: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Dengan database seeding kita dapat mengisi database dengan data dummy dengan perintah sederhana.

• Tabel posts terdiri dari 3 kolom (title, body, created).

• Semua kelas seed disimpan di dalam databaseseeds.

• Secara default kelas DatabaseSeeder sudah tersedia (terdefinisi).

• Dari kelas ini, kita dapat menggunakan metode call() untukmenjalankan kelas-kelas see lainnya.

Seeding

Page 148: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Untuk membangkitkan seeder, kita gunakan perintah Artisan. Semua seeders yang dibangkitkan oleh framework akanditempatkan di dalam direktori database/seeders

php artisan make:seeder UserTableSeeder

• Kelas seeder hanya mengandung satu metode default: run. Metodeini dipanggil ketika perintah db:seed dieksekusi.

Seeding

Page 149: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Seeding

Page 150: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Seeding

Page 151: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Buka databaseseedsDatabaseSeeder.php, dan ubah namakelas, tuliskan nama seed yang telah anda buat.

Mengubah Kelas DatabaseSeeder

Page 152: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 153: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Silakan pindah ke root directory dari Laravel (di Terminal) danjalankan perintah berikut:

php artisan db:seed

Perintah Artisan

Page 154: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

6. Laravel: Operasi CRUD

Page 155: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Create/Insert Data dalam Laravel

Page 156: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Untuk membuat model dan migrasi Post, ketikkan perintah ini di Terminal setelah berpindah ke root directory dari proyek Laravel:

php artisan make:model Post --migration

• Buka migrasi posts, dan tambahkan dua kolom ini:

$table string('title');

$table text('body');

1. Membuat Model Post

Page 157: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Fungsi up() Migrasi create_posts_table

Page 158: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Buat database bernama blog dalamMySql.

• Buka file .env dalam direktori root. Ubah baris berikut sesuaikonfigurasi database anda, misal:

• Nama DB_DATABASE menjadi blog

• DB_USERNAME menjadi root

• DB_PASSWORD menjadi blank

2. Membuat Database

Page 159: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Eksekusi perintah berikut di Terminal

php artisan migrate

• Setelah menjalankan perintah ini, Laravel akan membuatkan tabel posts di dalam database.

• Buka file appserviceprovider.php, di dalam metode boot(), tambahkan:

Schema::defaultStringLength(191);

• Pastikan ada baris untuk penggunan Illuminate\Support\Facades \Schema di atas nama kelas service provider ini.

3. Jalankan Migrasi (Migration)

Page 160: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 161: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Langkah berikutnya adalah membuat suatu Controller CRUD.

• Pada console (Terminal), pindahlah ke direktori root dan ketikperintah berikut:

php artisan make:controller PostController --resource

4. Membuat Controller CRUD

Page 162: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 163: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Buka file routesweb.php, dan tuliskan

Route::resource(‘posts’, ‘PostController’)

• Untuk menampilkan semua route yang dimiliki oleh aplikasi, padaTerminal ketikkan perintah:

php artisan route:list

5. Membuat Rute

Page 164: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 165: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 166: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Untuk menyisipkan atau menambahkan data, kita membuat form.

• Buat folder post di dalam views dan kemudian buat file barubernama create.blade.php

• Akan digunakan kelas Html, Form helper untuk membangun form ini

6. Membuat Form

Page 167: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

create.blade.php@extends('main')@section('content')<div class="row">

<div class="col-md-6 col-md-offset-3">@if(Session::has('success'))

<div class="alert alert-success" role="alert"><strong>Success:</strong> {{ Session::get('success') }}

</div> @endif<form method="post" {{ action(‘PostController@store') }}>

<input type="hidden" name="_token" value="{{ csrf_token() }}"><table class="table">

<caption class="text-center"><b>Student Registration Form</b></caption><tr><td>Post Title:</td><td><input type="text" name=“title" class="form-control"></td></tr><tr><td>Post Message:</td><td><textarea name=“body” class=“form-control”></textarea></td></tr><tr><td></td><td><input type="submit" name="submit" value="Add Student"

class="btn btn-primary"></td></tr></table>

</form></div>

</div>@endsection

Page 168: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Buka file PostController.php dan update fungsi create denganmenambahkan kode berikut:

public function create(){

return view(‘posts.create’);

}

• Untuk mengakses form ini, gunakan URL:

localhost:8000/posts/create

7. Mengupdate Controller

Akan memanggil view bernamacreate yang berada dalam folder

posts (dalam folder views)

Page 169: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 170: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Untuk mengakses form ketik URL:

localhost:8000/posts/create

8. Mengakses Form

Page 171: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Metode create dalam PostController digunakan untuk menampilkanview create, untuk menerima input dari pengguna.

• Metode store() bertugas untuk menyimpan data yang diinputkan di form create ke dalam database.

• Ada dua aksi yang dikerjakan di dalam metode store():• Menyimpan (store) data ke dalam database

• Mengarahkan (redirect) ke halaman lain (biasanya halaman index)

9. Metode store()

Page 172: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

public function store(Request $request){

$post = new Post;

$post->title = $request->input(‘title’);

$post->body = $request->input(‘body’);

$post->save();

session::flash('success', 'The post was successfully save!');

return redirect()->route('posts.show',$post->id);

}

Metode store()Ini adalah model yang bekerja

dengan tabel posts. Jadi inimembuat instance dari model.

Page 173: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 174: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Kita membuat obyek dari kelasPost (model), kita perlu

memberitahukan Controller tentang ini.

Page 175: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Flash Session adalah suatu session, hanya ada untuk request aktif(current request).

• Jika data berhasil disimpan ke dalam database, tampilkan pesansukses kepada pengguna. Dapat digunakan metode flash().

• Metode flash() perlu dua parameter. Pertama adalah key dan keduaadalah value (nilainya). Di bawah ini key diberi nama success danvaluenya adalah pesan yang akan ditampilkan.

session::flash(‘success’, ‘The post was successfully save!’)

Pesan Sukses

Page 176: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Kita menggunakan metodeflash dari kelas Session untukmenampilkan pesan sukses

kepada pengguna

Page 177: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Kira menggunakan kelasSession sehingga perlu

memberitahukan Controller tentang itu

Page 178: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Update PostController.php

public function show($id) {

return view('post.show');

}

Update PostController.php

Page 179: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Setup suatu halaman untuk pesan (message).

• Buat file baru bernama _messages.blade.php di dalam folder resourcesviewspartial.

• Untuk menampilkan pesan alert di bagian atas halaman, tambahkankode ini

@include(‘partial._messages’)

pada main.blade.php , sebelum @yield(‘content’)

_messages.blade.php

Page 180: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

@if(Session::has('success'))<div class="alert alert-success" role="alert">

<strong>Success:</strong> {{ Session::get('success') }}</div>

@endif

@if(count($errors) > 0)<div class="alert alert-danger" role="alert"><strong>Errors:</strong><ul>@foreach( $errors->all() as $error )

<li>{{ $error }}</li>@endforeach

</ul></div>

@endif

_messages.blade.php

Page 181: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

_messages.blade.php

Page 182: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 183: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Masukkan URL localhost:8000/posts/create, request menuju metodecreate() pada PostController, dan kemudian metode create() me-redirect ke create.blade.php dalam view.

• Create.blade.php adalah halaman berisi form, pengguna akan mengisiform dan klik pada tombol create post.

• Pada create.blade.php, ketika pengguna klik pada tombol, setelahmengisi form, request menuju metode store() dari PostController. Dalammetode store() data disimpan ke dalam database dan pesan suksesdibangkitkan dan kemudian me-redirect ke metode show() dariPostController.

• Pada metode show() akan me-redirect ke halaman view show.blade.php.

Bagaimana Kerjanya?

Page 184: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Membaca Data dari dalamLaravel

Page 185: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Kita telah membuat resource controller, menghasilkan banyak rute. posts.index adalah salah satunya. Kita akan menanganinya.

Membaca (Read) Data

Page 186: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Buka file PostController.php, kita akan kerjakan dua tugas di dalammetode index().

• Membuat suatu variabel dan meletakkan semua blog post kedalamnya dari database.

• Mengembalikan suatu view dan mengirimkan variabel di atas keview tersebut.

Update PostController

Page 187: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

public function index() {

// ambil semua data dari database

$posts = Post::all();

return view('post.index')->withPosts($posts);

}

Fungsi Index()

Page 188: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 189: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Buatlah file baru index.blade.php dan letakkan di dalam folder post di dalam folder views.

• Ini adalah file dimana kita akan menampilkan semua blog post yang sudah ada di dalam database.

Index.blade.php

Page 190: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

@extends('main')@section('title', '| All Posts')@section('content')<div class="row"><div class="col-md-10">

<h1>All Posts</h1></div><div class="col-md-2"><a href="{{ route('posts.create') }}" class="btn btn-lg btn-block btn-primary btn-h1-spacing">

Create New Post</a></div><hr/>

<div class="col-md-12"><hr/></div></div><div class="row"><div class="col-md-12"><table class="table"><thead>

<th>#</th><th>Title</th><th>Body</th><th>Created At</th><th></th></thead><tbody>@foreach($posts as $post)<tr><th>{{ $post->id }}</th><td>{{ $post->title }}</td><td>{{ $post->body }}</td><td>{{ $post->created_at }}</td><td><a href="#" class="btn btn-default">View</a><a href="#" class="btn btn-default">Edit</a></td></tr>@endforeach</tbody></table></div></div>@endsection

Potongan Kode index.blade.php

Page 191: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 192: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Untuk mengakses halaman index, masukkan URL: localhost:8000/posts

Output

Page 193: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Update Data dalam Laravel

Page 194: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Klik tombol Edit, requestnya menuju metode edit() padaPostController, dan kemudian metode edit() me-redirect keedit.blade.php dalam view.

• edit.blade.php adalah file dimana kita meletakkan kode program untuk menampilkan form update data.

• Pada edit.blade.php, saat pengguna klik pada tombol Update, setelah mengedit datanya, request menuju metode update() dariPostController.

• Pada metode update() kita meminta kode untuk menyimpan data perubahan (terupdate) ke dalam database.

Bagaimana Kerjanya?

Page 195: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 196: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 197: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 198: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Untuk mengupdate data, kita perlu membuat file baru.

• Buatlah file bernama edit.blade.php dan simpan di dalamresourceviewspost

Edit.blade.php

Page 199: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

@extends('main')@section('title', '| Edit Blog Post')@section('content')

<div class="row">{!! Form::model($post, ['route' => ['posts.update', $post->id], 'method' => 'PUT']) !!}<div class="col-md-8">

{{ Form::label('title', 'Title:') }}{{ Form::text('title', null, ["class" => 'form-control input-lg']) }}{{ Form::label('body', 'Body:', ['class' => "form-spacing-top"])}}{{ Form::textarea('body', null, ["class" => 'form-control']) }}

</div>

<div class="col-md-4"><div class="well"><dl class="dl-horizontal">

<dt>Create At: </dt><dd>{{ date('M j, Y h:ia', strtotime($post->created_at)) }}</dd>

</dl><dl class="dl-horizontal">

<dt>Last Updated: </dt><dd>{{ date('M j, Y h:ia', strtotime($post->updated_at)) }}</dd>

</dl><hr/><div class="row"><div class="col-sm-6">{!! Html::linkRoute('posts.show', 'Cancel', array($post->id), array('class' => 'btn btn-danger btn-block')) !!}</div><div class="col-sm-6">

{{ Form::submit('Save Changes', ['class' => 'btn btn-success btn-block']) }}</div></div></div></div>{!! Form::close() !!}

</div>

@stop

Page 200: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Untuk update data, hanyadapat menggunakan metode

PUT atau PATCH

Page 201: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Buka PostController.php, untuk update kita akan bekerja padametode update(). Ada empat tugas di dalam metode ini:

• Validasi terhadap data

• Menyimpan data ke dalam database

• Menampilkan pesan sukses

• Me-redirect ke view posts.show

Update PostController

Page 202: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Argumen $id adalah record yang akan diupdate.

Page 203: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 204: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 205: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 206: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Menghapus Data dalam Laravel

Page 207: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Delete tidak perlu halaman khusus (beda dengan create dan edit), cukup metode di dalam controller saja.

• Buka show.blade.php , ubah file tersebut. Ganti tombol delete dengantombol submit dari kelas Form.

{!! Form::open(['route' => ['posts.destroy’, $post->id], 'method' => 'DELETE']) !!}

{!! Form::submit('Delete’, ['class' => 'btn btn-danger btn-block']) !!}

{!! Form::close() !!}

Menghapus Data (Delete)

Page 208: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 209: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

• Buka PostController.php. Penghapusan data ditangani dalam metodedestroy().

public function destroy($id) {//ambil post sesuai $id$post = Post::find($id);$post->delete(); Session::flash('success’,

'The post was successfully deleted.');

return redirect()->route('posts.index');}

Metode destroy()

Page 210: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,

Argumen $id adalah record yang akan dihapus.

Page 211: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,
Page 212: Rekayasa Aplikasi Internet 2017 · PDF filePemrograman Berorientasi Obyek dengan PHP dan Laravel 3. ... JavaScript dan CSS. ... (website tutorial,