Praktikum Laravel: Struktur dan Routing
Praktikum Laravel: Struktur dan Routing
LATIHAN 1
A. Soal
B. Screenshoot
C. Syntax
D. Penjelasan
Membuat project Laravel dengan nama praktikumLaravel2
LATIHAN 2
A. Soal
Pada folder resources/views, buatlah direktori baru dengan nama praktikum2. Kemudian
pada direktori tersebut buatlah sebuah file Blade dengan nama index.blade.php dan isi
1 <!doctype html>
2 <html>
3
4 <head>
5 <title>Praktikum Laravel Ke-2</title>
6 </head>
7
8 <body>
9 <h1>Praktikum Laravel Ke-2</h1>
10 </body>
11
12 </html>
B. Screenshoot
C. Syntax
1 <!doctype html>
2 <html>
3
4 <head>
5 <title>Praktikum Laravel Ke-2</title>
6 </head>
7
8 <body>
9 <h1>Praktikum Laravel Ke-2</h1>
10 </body>
11
12 </html>
D. Penjelasan
Membuat direktori baru dengan nama praktikum2 dan menambahkan file index.blade.php
LATIHAN 3
A. Soal
1 Route::get(‘/praktikum-laravel’, function () {
2 return view(‘praktikum2.index’);
3 });
B. Screenshoot
C. Syntax
1 <?php
2
3 use Illuminate\Support\Facades\Route;
4
5 /*
6 |------------------------------------------------------
7 --------------------
8 | Web Routes
9 |------------------------------------------------------
10 --------------------
11 |
12 | Here is where you can register web routes for your
13 application. These
14 | routes are loaded by the RouteServiceProvider within
15 a group which
16 | contains the "web" middleware group. Now create
17 something great!
18 |
19 */
20
21 Route::get('/', function () {
22 return view('welcome');
23 });
24
25 Route::get('/praktikum-laravel', function () {
26 return view('praktikum2.index');
27 });
28
D. Penjelasan
Menambahkan baris pada web.php yang terletak pada direktori routes
LATIHAN 4
A. Soal
B. Penjelasan
URL untuk mengakses halaman tersebut adalah http://127.0.0.1:8000/praktikum-
laravel
LATIHAN 5
A. Soal
B. Penjelasan
Pada method view menggunakan parameter ‘praktikum2.index’ karena mengacu pada
index.blade.php yang terletak pada folder praktikum2
LATIHAN 6
A. Soal
Jalankan halaman tersebut, tempelkan screenshot-nya pada tempat yang telah disediakan
di bawah ini.
B. Screenshoot
PERULANGAN DENGAN SINTAKS BLADE
LATIHAN 1
A. Soal
1 <!doctype html>
2 <html>
3
4 <head>
5 <title>Praktikum Laravel Ke-2</title>
6 </head>
7
8 <body>
9 <ul>
10 <li>Ini adalah urutan ke-1</li>
11 <li>Ini adalah urutan ke-2</li>
12 <li>Ini adalah urutan ke-3</li>
13 <li>Ini adalah urutan ke-4</li>
14 <li>Ini adalah urutan ke-5</li>
15 </ul>
16 </body>
17
18 </html>
B. Screenshoot
C. Syntax
1 <!doctype html>
2 <html>
3
4 <head>
5 <title>Praktikum Laravel Ke-2</title>
6 </head>
7
8 <body>
9 <ul>
10 <li>Ini adalah urutan ke-1</li>
11 <li>Ini adalah urutan ke-2</li>
12 <li>Ini adalah urutan ke-3</li>
13 <li>Ini adalah urutan ke-4</li>
14 <li>Ini adalah urutan ke-5</li>
15 </ul>
16 </body>
17
18 </html>
D. Penjelasan
Mengubah isi file index.blade.php
LATIHAN 2
A. Soal
Kemudian ubahlah lagi menggunakan loop dengan sintaks Blade. Tempelkan kode yang
B. Screenshoot
C. Syntax
1 <!DOCTYPE html>
2 <html lang="en">
3
4 <head>
5 <meta charset="UTF-8">
6 <meta name="viewport" content="width=device-width,
7 initial-scale=1.0">
8 <meta http-equiv="X-UA-Compatible"
9 content="ie=edge">
10 <title>Praktikum Laravel Ke-2</title>
11 </head>
12
13 <body>
14 <ul>
15
16 @for ($i = 1; $i < 6; $i++) <li> Ini adalah
17 urutan ke-{{ $i }} </li>
18 @endfor
19 </ul>
20 </body>
21
</html>
D. Penjelasan
Menampilkan list dengan looping
LATIHAN 1
A. Soal
B. Screenshoot
C. Syntax
D. Penjelasan
Menambah controller baru.
LATIHAN 2
A. Soal
Buka file controller yang baru saja di-generate pada folder app\Http\Controllers dan
tambahkan sebuah method pada class controller tersebut seperti kode berikut:
B. Screenshoot
C. Syntax
1 <?php
2
3 namespace App\Http\Controllers;
4
5 use Illuminate\Http\Request;
6
7 class EventsController extends Controller
8 {
9 public function show($location, $name)
10 {
11 return view('events_show')
12 ->with('location', $location)
13 ->with('name', $name);
14 }
15 }
D. Penjelasan
Menambahkan method baru pada EventsController.
LATIHAN 3
A. Soal
Tambahkan rute berikut:
1 Route::get(‘events/{location}/{name}’,
2 [App\Http\Controllers\EventsController::class,
3 ‘show’]);
B. Screenshoot
C. Syntax
1 <?php
2
3 use Illuminate\Support\Facades\Route;
4
5 /*
6 |------------------------------------------------------
7 --------------------
8 | Web Routes
9 |------------------------------------------------------
10 --------------------
11 |
12 | Here is where you can register web routes for your
13 application. These
14 | routes are loaded by the RouteServiceProvider within
15 a group which
16 | contains the "web" middleware group. Now create
17 something great!
18 |
19 */
20
21 Route::get('/', function () {
22 return view('welcome');
23 });
24
25 Route::get('/praktikum-laravel', function () {
26 return view('praktikum2.index');
27 });
28
29 Route::get('events/{location}/{name}',
30 [App\Http\Controllers\EventsController::class,
31 'show']);
D. Penjelasan
Menambahkan rute pada web.php
LATIHAN 4
A. Soal
Apakah nama file view (Blade) yang harus dibuat?
B. Penjelasan
LATIHAN 5
A. Soal
Pada direktori apakah file view tersebut harus diletakkan?
B. Penjelasan
LATIHAN 6
A. Soal
Tuliskan sebuah contoh URL untuk mengakses halaman tersebut.
B. Penjelasan
LATIHAN 7
A. Soal
Buatlah file view (Blade) tersebut sehingga dapat menampilkan nilai variabel location
dan name. Tempel kode yang dihasilkan pada tempat yang telah disediakan di bawah ini:
B. Screenshoot
C. Syntax
1 <!DOCTYPE html>
2 <html lang="en">
3
4 <head>
5 <meta charset="UTF-8">
6 <meta name="viewport" content="width=devicewidth,
7 initial-scale=1.0">
8 <meta http-equiv="X-UA-Compatible"
9 content="ie=edge">
10 <title>Praktikum Laravel ke-2</title>
11 </head>
12
13 <body>
14 <h1> Halo, {{ $name }} selamat datang di Kota {{
15 $location }}!
16 </h1>
17 </body>
18
19 </html>
D. Penjelasan
LATIHAN 1
A. Soal
Jalankan MySQL dan buatlah database baru dengan nama “praktikumlaravel2”. (Bila saudara
menggunakan XAMPP, jalankan Apache dan MySQL kemudian klik tombol Admin pada
baris MySQL untuk membuka aplikasi phpMyAdmin. Melalui phpMyAdmin, saudara bisa
membuat database baru tersebut).
B. Screenshoot
C. Syntax
D. Penjelasan
Membuat database baru dengan nama praktikumlaravel2
LATIHAN 2
A. Soal
Pada file .env yang berada pada direktori root proyek Laravel, ubahlah nama database
MySQL sesuai nama yang tadi telah dibuat (jika namanya berbeda). Bila diperlukan, atur
pula username, password atau konfigurasi lainnya untuk mengakses MySQL.
B. Screenshoot
C. Syntax
D. Penjelasan
Mengganti nama database, username, dan password sesuai dengan database yang baru
dibuat.
LATIHAN 3
A. Soal
Buatlah model dengan menjalankan perintah sbb:
B. Screenshoot
C. Syntax
D. Penjelasan
Membuat model baru.
LATIHAN 4
A. Soal
Buka file migration yang di-generate oleh Artisan pada direktori “/database/migration”
pilih file yang sesuai dengan model yang baru saja dibuat (nama file berakhiran
...._create_events_table). Kemudian ubah method up() menjadi sbb:
B. Screenshoot
C. Syntax
1 <?php
2
3 use Illuminate\Database\Migrations\Migration;
4 use Illuminate\Database\Schema\Blueprint;
5 use Illuminate\Support\Facades\Schema;
6
7 return new class extends Migration
8 {
9 /**
10 * Run the migrations.
11 *
12 * @return void
13 */
14 public function up()
15 {
16 Schema::create('events', function (Blueprint
17 $table) {
18 $table->increments('id');
19 $table->string('location');
20 $table->string('name');
21 });
22 }
23
24
25 /**
26 * Reverse the migrations.
27 *
28 * @return void
29 */
30 public function down()
31 {
32 Schema::dropIfExists('events');
33 }
34 };
D. Penjelasan
LATIHAN 5
A. Soal
Lakukan migrasi dengan menjalankan perintah sbb:
B. Screenshoot
C. Syntax
D. Penjelasan
Melakukan migrasi
LATIHAN 6
A. Soal
Isi tabel events dengan data sebagai berikut (Saudara bisa menggunakan aplikasi
phpMyAdmin atau sejenisnya):
id location name
1 Malang Kerja Bakti
2 Banjarmasin Lomba Melukis
3 Medan Rapat Tahunan
B. Screenshoot
C. Syntax
D. Penjelasan
LATIHAN 8
A. Soal
Pada class EventsController, tambahkan method index() sbb:
C. Syntax
1 <?php
2
3 namespace App\Http\Controllers;
4
5 use Illuminate\Http\Request;
6
7 class EventsController extends Controller
8 {
9 public function show($location, $name)
10 {
11 return view('events_show')
12 ->with('location', $location)
13 ->with('name', $name);
14 }
15
16 public function index()
17 {
18 $events = Event::all();
19 return view('events . index')->with('events',
20 $events);
21 }
22 }
D. Penjelasan
Menambahkan method index() pada EventsController.
LATIHAN 9
A. Soal
Pada kode EventsController.php, tambahkan pula pernyataan untuk import sbb:
1 use App\Models\Event;
B. Screenshoot
C. Syntax
1 <?php
2
3 namespace App\Http\Controllers;
4
5 use Illuminate\Http\Request;
6 use App\Models\Event;
7
8 class EventsController extends Controller
9 {
10 public function show($location, $name)
11 {
12 return view('events_show')
13 ->with('location', $location)
14 ->with('name', $name);
15 }
16
17 public function index()
18 {
19 $events = Event::all();
20 return view('events . index')->with('events',
21 $events);
22 }
23 }
D. Penjelasan
Menambahkan pernyataan import.
LATIHAN 10
A. Soal
Kemudian buatlah view dengan lokasi dan nama sesuai pada method index() di atas, isi
dengan kode sbb:
1 <!doctype html>
2 <html>
3 <head>
4 <title>Events - Praktikum Laravel Ke-2</title>
5 </head>
6 <body>
7 <h1>Events</h1>
8 <ul>
9 @forelse($events as $event)
10 <li>{{ $event->location }} - {{ $event->name }}</li>
11 @empty
12 <li>Belum ada event.</li>
13 @endforelse
14 </ul>
15 </body>
16 </html>
B. Screenshoot
C. Syntax
1 <!DOCTYPE html>
2 <html lang="en">
3
4 <head>
5 <meta charset="UTF-8">
6 <meta name="viewport" content="width=device-width,
7 initial-scale=1.0">
8 <meta http-equiv="X-UA-Compatible"
9 content="ie=edge">
10 <title>Events-Praktikum Laravel 2</title>
11 </head>
12
13 <body>
14 <h1>Events</h1>
15 <ul>
16 @forelse ($events as $event)
17 <li>{{ $event->location }} - {{$event->name
18 }}</li>
19 @empty
20 <li>Belum ada event.</li>
21 @endforelse
22 </ul>
23 </body>
24
25 </html>
D. Penjelasan
File events_index.blade.php berada pada folder views.
LATIHAN 11
A. Soal
Tambahkan rute berikut:
1 Route::get(‘events’,
2 [App\Http\Controllers\EventsController::class,
3 ‘index’]);
B. Screenshoot
C. Syntax
1 <?php
2
3 use Illuminate\Support\Facades\Route;
4
5 /*
6 |------------------------------------------------------
7 --------------------
8 | Web Routes
9 |------------------------------------------------------
10 --------------------
11 |
12 | Here is where you can register web routes for your
13 application. These
14 | routes are loaded by the RouteServiceProvider within
15 a group which
16 | contains the "web" middleware group. Now create
17 something great!
18 |
19 */
20
21 Route::get('/', function () {
22 return view('welcome');
23 });
24
25 Route::get('/praktikum-laravel', function () {
26 return view('praktikum2.index');
27 });
28
29 Route::get('events/{location}/{name}',
30 [App\Http\Controllers\EventsController::class,
31 'show']);
32 Route::get('events',
33 [App\Http\Controllers\EventsController::class,
34 'index']);
D. Penjelasan
Menambahkan rute baru pada web.php
LATIHAN 12
A. Soal
Buka halaman tersebut pada web browser dan tempelkan screenshot-nya pada tempat yang
disediakan di bawah ini:
B. Screenshoot
C. Syntax
D. Penjelasan
LATIHAN 1
A. Soal
1 Route::get(‘events/validate’,[App\Http\Controllers\Even
2 tsController::class,
3 ‘showValidateForm’])->name(‘validateform.event’);
4 Route::post(‘events/validate’,[App\Http\Controllers\Eve
5 ntsController::class,
6 ‘validateForm’])->name(‘validate.event’);
B. Screenshoot
C. Syntax
1 <?php
2
3 use Illuminate\Support\Facades\Route;
4
5 /*
6 |------------------------------------------------------
7 --------------------
8 | Web Routes
9 |------------------------------------------------------
10 --------------------
11 |
12 | Here is where you can register web routes for your
13 application. These
14 | routes are loaded by the RouteServiceProvider within
15 a group which
16 | contains the "web" middleware group. Now create
17 something great!
18 |
19 */
20
21 Route::get('/', function () {
22 return view('welcome');
23 });
24
25 Route::get('/praktikum-laravel', function () {
26 return view('praktikum2.index');
27 });
28
29 Route::get('events/{location}/{name}',
30 [App\Http\Controllers\EventsController::class,
31 'show']);
32 Route::get('events',
33 [App\Http\Controllers\EventsController::class,
34 'index']);
35
36
37 Route::get('events/validate',[App\Http\Controllers\Even
38 tsController::class,
39 'showValidateForm'])->name('validateform.event');
40 Route::post('events/validate',[App\Http\Controllers\Eve
41 ntsController::class,
42 'validateForm'])->name('validate.event');
D. Penjelasan
Menambahkan rute baru
LATIHAN 2
A. Soal
Pada folder view, buatlah file baru bernama “flash-message.blade.php”, kemudian isi
dengan kode sbb:
B. Screenshoot
C. Syntax
D. Penjelasan
Membuat file dengan nama flash-message.blade.php yang berisi kode diatas.
LATIHAN 3
A. Soal
Pada class EventsController, tambahkan dua method sebagai berikut:
1 public function showValidateForm()
2 {
3 return view(‘events.validate’);
4 }
5 public function validateForm(Request $request)
6 {
7 $request->validate([
8 ‘location’ => ‘required|alpha|min:3|max:50’,
9 ‘name’ => ‘required|string|min:3|max:50’
10 ]);
11 return back()->with(‘success’,’Data valid’);
12 }
B. Screenshoot
C. Syntax
1 <?php
2
3 namespace App\Http\Controllers;
4
5 use Illuminate\Http\Request;
6 use App\Models\Event;
7
8 class EventsController extends Controller
9 {
10 public function show($location, $name)
11 {
12 return view('events\show')
13 ->with('location', $location)
14 ->with('name', $name);
15 }
16
17 public function index()
18 {
19 $events = Event::all();
20 return view('events\index')->with('events',
21 $events);
22 }
23
24 public function showValidateForm()
25 {
26 return view(‘events . validate’);
27 }
28
29 public function validateForm(Request $request)
30 {
31 $request->validate([
32 'location' =>
33 'required|alpha|min:3|max:50',
34 'name' => 'required|string|min:3|max:50'
35 ]);
36 return back()->with('success', 'Data valid');
37 }
38 }
D. Penjelasan
Menambahkan dua method pada EventsController.php yang berguna untuk menampilkan
session sementara berupa peringatan data valid atau data tidak valid
LATIHAN 4
A. Soal
Jelaskan validasi apa saja yang dilakukan pada data location dan name.
B. Screenshoot
C. Syntax
D. Penjelasan
Pada location terdapat validasi required yang mengharuskan penggunaan huruf
dengan minimal karakter 3 dan maksimal 50. Pada name, menggunakan validasi
yang sama seperti location tetapi pada name menggunakan String.
LATIHAN 5
A. Soal
Sesuai isi method showValidateForm yang baru saja ditambahkan, buatlah file Blade
dengan isi sbb:
1 <!doctype html>
2 <html>
3 <head>
4 <title>Event Validation</title>
5 </head>
6 <body>
7 @include(‘flash-message’)
8 <form action=“{{ route(‘validate.event’) }}”
9 method=“post”>
10 @csrf
11 Location: <input type=“text” name=“location”><br>
12 Name: <input type=“text” name=“name”><br>
13 <input type=“submit” value=“Validate”>
14 </form>
15 </body>
16 </html>
B. Screenshoot
C. Syntax
1 <!doctype html>
2 <html>
3
4 <head>
5 <title>Event Validation</title>
6 </head>
7
8 <body>
9 @include('flash-message')
10 <form action="{{ route('validate.event') }}"
11 method="post">
12 @csrf
13 Location: <input type="text"
14 name="location"><br>
15 Name: <input type="text" name="name"><br>
16 <input type="submit" value="Validate">
17 </form>
18 </body>
19
20 </html>
D. Penjelasan
Menambah file pada direktori view/events/ dengan nama yang sesuai dengan
method showValidateForm. Yaitu events_validate.blade.php
LATIHAN 6
A. Soal
Pada formulir di atas, apakah fungsi @csrf? Apa yang terjadi jika baris tersebut (@csrf)
dihapus?
B. Screenshoot
C. Syntax
D. Penjelasan
@csrf berfungsi untuk melindungi form dari serangan cross-site request forgery
yang memaksa pengguna untuk melakukan Tindakan yang tidak diinginkan
pada web saat proses autentikasi
LATIHAN 7
A. Soal
Jalankan aplikasi, tempelkan tiga buah screenshot, yaitu: screenshot formulir validasi,
screenshot ketika data tidak valid, dan screenshot ketika data valid.
B. Screenshoot
C. Syntax
D. Penjelasan
LATIHAN 1
A. Soal
Pastikan MySQL Server dalam keadaan berjalan.
B. Screenshoot
C. Syntax
D. Penjelasan
MySQL server dalam keadaan berjalan.
LATIHAN 2
A. Soal
Buatlah salinan file rute (web.php) untuk mengantisipasi hilangnya rute-rute yang telah
didefinisikan sebelumnya.
B. Screenshoot
C. Syntax
D. Penjelasan
LATIHAN 3
A. Soal
Buka CMD/Terminal dan jalankan perintah-perintah berikut secara berurutan pada project
root directory:
B. Screenshoot
C. Syntax
D. Penjelasan
Menjalankan serangkaian perintah pada command prompt
LATIHAN 4
A. Soal
Buka file web.php pada folder routes, periksa apakah rute-rute yang sebelumnya dibuat
telah hilang atau masih ada. Bila hilang, maka tambahkan kembali rute-rute yang hilang
tersebut.
B. Screenshoot
C. Syntax
D. Penjelasan
Memasukkan Kembali rute yang hilang
LATIHAN 5
A. Soal
B. Screenshoot
C. Syntax
D. Penjelasan
LATIHAN 6
A. Soal
Tempelkan screenshot halaman Dashboard yang tampil setelah proses registrasi berhasil.
B. Screenshoot
C. Syntax
D. Penjelasan
LATIHAN 7
A. Soal
Lakukan proses logout melalui menu yang ada pada halaman Dashboard tersebut.
B. Screenshoot
C. Syntax
D. Penjelasan
LATIHAN 8
A. Soal
Selanjutnya kita akan melindungi halaman validasi yang sebelumnya telah kita buat
(validateform.event dan validate.event) sehingga hanya bisa diakses oleh
pengguna yang sedang logged in. Sisipkan kode yang bertanda khusus berikut ini pada rute:
1 Route::get(‘events/validate’,[App\Http\Controllers\Even
2 tsController::class,
3 ‘showValidateForm’])->middleware([‘auth’])-
4 >name(‘validateform.event’);
5 Route::post(‘events/validate’,[App\Http\Controllers\Eve
6 ntsController::class,
7 ‘validateForm’])->middleware([‘auth’])-
8 >name(‘validate.event’);
B. Screenshoot
C. Syntax
1 <?php
2
3 use App\Http\Controllers\ProfileController;
4 use Illuminate\Support\Facades\Route;
5
6 /*
7 |-------------------------------------------------------
8 -------------------
9 | Web Routes
10 |-------------------------------------------------------
11 -------------------
12 |
13 | Here is where you can register web routes for your
14 application. These
15 | routes are loaded by the RouteServiceProvider within a
16 group which
17 | contains the "web" middleware group. Now create
18 something great!
19 |
20 */
21
22 Route::get('/', function () {
23 return view('welcome');
24 });
25
26 Route::get('/dashboard', function () {
27 return view('dashboard');
28 })->middleware(['auth', 'verified'])->name('dashboard');
29
30 Route::middleware('auth')->group(function () {
31 Route::get('/profile', [ProfileController::class,
32 'edit'])->name('profile.edit');
33 Route::patch('/profile', [ProfileController::class,
34 'update'])->name('profile.update');
35 Route::delete('/profile', [ProfileController::class,
36 'destroy'])->name('profile.destroy');
37 });
38
39 require __DIR__.'/auth.php';
40
41 Route::get('/praktikum-laravel', function () {
42 return view('praktikum2.index');
43 });
44 Route::get('events/{location}/{name}',
45 [App\Http\Controllers\EventsController::class, 'show']);
46 Route::get('events',
47 [App\Http\Controllers\EventsController::class,
48 'index']);
49 Route::get('events/validate',[App\Http\Controllers\Event
50 sController::class, 'showValidateForm'])-
51 >name('validateform.event');
52 Route::post('events/validate',[App\Http\Controllers\Even
53 tsController::class, 'validateForm'])-
54 >name('validate.event');
55
56 Route::get('events/validate',[App\Http\Controllers\Event
57 sController::class, 'showValidateForm'])-
58 >middleware(['auth'])->name('validateform.event');
59 Route::post('events/validate',[App\Http\Controllers\Even
60 tsController::class, 'validateForm'])-
61 >middleware(['auth'])->name('validate.event');
D. Penjelasan
LATIHAN 9
A. Soal
Dalam posisi tidak logged in, akses halaman formulir validasi. Apa yang terjadi?
B. Screenshoot
C. Syntax
D. Penjelasan
Ketika mengakses events/validate akan langsung menuju ke halaman login.
LATIHAN 10
A. Soal
Dalam posisi logged in, akses halaman formulir validasi. Apa yang terjadi?
B. Screenshoot
C. Syntax
D. Penjelasan
Ketika mengakses events/validate dalam kondisi sudah login maka akan langsung mengakses
halaman validate.