LARAVEL
KONSEP MVC
==================
model (menyiapkan database), view, controller
mobil : bensin, body, mesin
-buat project dmn aja
-cmd / open with gitbash / windows terminal
vanilla js -> js murni
php native -> php murni
--verify email, login, register, are u human (CAPTHA), forgot pw, change pw
INSTAL PRJOCET LARAVEL
===============================
//install laravel di computer (1x aja)
composer global require laravel/installer
//buat project laravel di folder
composer create-project laravel/laravel namaProject --prefer-dist
laravel/laravel ->nama package
--prefer-dist ->laravel dgn versi terbaru
//kalo ga bisa
composer create-project laravel/laravel namaProject --prefer-dist --ignore-
platform-req=ext-fileinfo
composer -> buat liat options, list command dll
composer --version -> liat versi laravelnya
composer fund
A. LESSON
================
1. Routing
2. Templating
3, Method
4. Migration
5. Model
6. Controller
7. CRUD
B. ARTISAN COMMAND
=======================
1. php artisan serve
menjalankan project
2. php artisan make:controller
membuat controller baru
3. php artisan make:model
membuat model baru
4. php artisan make:migration
membuat migration baru
5. php artisan migrate
menjalankan migrasi database
C. DIRECTORY
================
letak folder
Models : app -> models ==database (nama db)
Controller : app -> http -> controller
View : resources -> views
routes == jalur url web
public == asset (sifatnya statis; kyk css, js, photo)
Migrations : database -> migrations ==nama table db
D. EXTENSIONS
================
1. Laravel Blade Formatter
2. Laravel Blade Snippets
3. Laravel Snippets
E. SHORTCUTS
==============
1. ctrl + ` == terminal di vscode
STEP
==================
1. putusin si route, trus ubah route ke new file yg bakal kita buat (resource ->
views -> ....[Link])
terus kita buat folder khusus (layouts) buat kerangka2nya, jadi nnti di
homenya tinggal extends dan section2 aja
*kalo tanpa blade -> @ nya gabakal kebaca
main page : (kerangka) @yield <==> @section (bagian)
--ex: di body ada include/extends-navbar, yield-content
@include ->akan menginclude si navbar, jadi navbar akan berada tepat di paling atas
@extends ->maka si konten akan di jalankan lalu akan mengextend navbar ( jadi
navbarnya ada setelah konten, padahal hrsnya navbar selalu ada di atas)
@include('[Link]') == @include('layouts/navbar')
BEDA @include DAN @extends
kalo extends kita bisa nambahin perintah2 (@section <==> @yield) gitu, kalo include
gabisa
CLONE GITHUB
==============
vendor -> isinya nama package (ex: extension) contoh : laravel/adeline
.env -> credentials (nama db, username, password, etc.)
1. copy link repository
2. terus bebas mau di taro di folder mana aja
3. cmd => git clone pasteLinknya
4. udah ada dee projectnya
cd projectnya
code .
5. cmd => php artisan serve
harusnya ini gabakal jalan, karena folder vendornya gaada
6. cmd => composer install
kalo gabisa; cmd => composer install --ignore-platform-req=ext-fileinfo
nah harusnya bisa, dan folder vendornya bakal muncul
7. cmd => php artisan serve
8. trus copy url , nah dia bakal 500 server error
Karena .env nya gaada
nah kita bikin aja .env nya kita copas dari .[Link]
9. kalo masi error juga
di terminal vscode => php artisan key:generate
untuk mengenerate key (APP_KEY)
Authentication -> login, register, forgot password, change password, signup,
verifikasi email (menghindari input email abal2) , verifikasi CAPTHA (r u human),
profile
Authorization -> role management
starter kits Authentication => laravel breeze, laravel jet stream
-> kalo install itu, bakal include si tailwind (framework css) jadi tampilannya uda
jadi , proses udah jadi , tinggal pake aja de:D
manual Authentication -> laravel ui -> pake bootstrap
yg berhubungan dengan blade bakal arahin ke resources-> views
.container -> class="container"
container-fluid --> jadi menjorok ke dalam
ms-auto -> margin start
me-auto -> margin end
class="form-control" ->jadi lebi rapi kebawah semua
dari tepi ke tepi = 12
col-md-4 = membagi 3 bagian dengan tiap kotak ukuran 4
mt-5 -> margin top ==jarak antara navbar dgn content
p-3 -> padding 3 == jarak kotak kanan kiri atas bawah dengan isi
rounded -> biar pinggirnya melengkung
masukin css bootsrap, icon, dll di head
masukin js di body
buat folder css baru di public
href="{{ asset(css/[Link]) }}
asset =>> diarahin ke folder public
bikin tombol submit
nyalain xampp -> bikin database
$table->enum('role', ['admin', 'user'])->default('user');
^tambahin ini di migration user
buat role management
trus env nya kita masukin nama db yg kita buat
trus di terminal -> php artisan migrate = untuk code yg ada di vscode masukkin
data2 ke databasenya (tabel)
enum ==> kyk dropdown yg bisa kita pilih
php artisan make:controller AuthController
lalu terbuat deh, ada di app-> http ->controller
terus route nya kita arahin ke controllernya
DARI
Route::get('/register', function () {
return view('auth/register');
});
JADI
Route::get('/register', 'App\Http\Controllers\
AuthController@showRegistrationForm');
trus function yang ada di route tadi kita pindahin ke authcontroller
trus di [Link] di form ny a kita tambahin method post karena mau
nambah data ke database
$request untuk mengetahui apa yang diketik oleh user
menampilkan halaman pake method get
menambah data pake method post
password_confirmed harus ini karna udah bawaan dari laravel, nanti dia bakal
bandingin sama si passwordnya
@csrf
Cross Site Request Forgery
mengindari page expired
mencegah web lain mengarahkan action ke web kita
dia bakal buat suatu token di halaman web kita, nah kalo ada sesuatu yg di input
dia bakal cek si token sama atau beda. karena kalo dari web lain tokennya bakal
beda dan akan gagal, nah kalo sama maka berhasil
trus di app->models->user tambahin additional input
buat encrypt password
-bcrypt
-md5
-sha1
-base64
php artisan migrate:fresh
==>semua table bakal di drop semua, terus dibuat ulang
kalo error coba cek nama database nya
email:dns
==>validasi email with '@' and domain '.'
middleware
app->http->controller->middleware->kernel
yg ada di .gitignore
semuanya buat css sama js
kecuali si vendor ->dia itu buat php
href="#"
dia tetep
href=""
dia bakal refresh page nya
onclick="[Link]();
untuk atasin biar ga loading
[Link]('logout-form').submit();">
kita get yg namanya logout-form
lalu kita submit
dan dia bakal arahin urlnya ke /logout
terus csrf dee