Laravel - Panduan Cepat
Laravel adalah kerangka kerja PHP sumber terbuka, yang kuat dan mudah dipahami. Ini mengikuti pola desain model-view-controller. Laravel menggunakan kembali komponen kerangka berbeda yang ada yang membantu dalam membuat aplikasi web. Aplikasi web yang dirancang lebih terstruktur dan pragmatis.
Laravel menawarkan serangkaian fungsionalitas yang kaya yang menggabungkan fitur-fitur dasar kerangka kerja PHP seperti CodeIgniter, Yii, dan bahasa pemrograman lain seperti Ruby on Rails. Laravel memiliki serangkaian fitur yang sangat kaya yang akan meningkatkan kecepatan pengembangan web.
Jika Anda sudah familiar dengan Core PHP dan Advanced PHP, Laravel akan membuat tugas Anda lebih mudah. Ini menghemat banyak waktu jika Anda berencana mengembangkan situs web dari awal. Selain itu, situs web yang dibangun di Laravel aman dan mencegah beberapa serangan web.
Keuntungan dari Laravel
Laravel menawarkan keuntungan berikut, saat Anda mendesain aplikasi web berdasarkan itu -
Aplikasi web menjadi lebih skalabel, berkat kerangka kerja Laravel.
Banyak waktu yang dihemat dalam mendesain aplikasi web, karena Laravel menggunakan kembali komponen dari kerangka lain dalam mengembangkan aplikasi web.
Ini mencakup ruang nama dan antarmuka, sehingga membantu mengatur dan mengelola sumber daya.
Komposer
Komposer adalah alat yang mencakup semua dependensi dan pustaka. Ini memungkinkan pengguna untuk membuat proyek sehubungan dengan kerangka kerja yang disebutkan (misalnya, yang digunakan dalam instalasi Laravel). Perpustakaan pihak ketiga dapat diinstal dengan mudah dengan bantuan komposer.
Semua dependensi dicatat dalam composer.json file yang ditempatkan di folder sumber.
Tukang
Antarmuka baris perintah yang digunakan di Laravel disebut Artisan. Ini mencakup seperangkat perintah yang membantu dalam membangun aplikasi web. Perintah-perintah ini digabungkan dari kerangka kerja Symphony, menghasilkan fitur tambahan di Laravel 5.1 (versi terbaru Laravel).
Fitur Laravel
Laravel menawarkan fitur-fitur utama berikut yang menjadikannya pilihan ideal untuk mendesain aplikasi web -
Modularitas
Laravel menyediakan 20 pustaka dan modul bawaan yang membantu peningkatan aplikasi. Setiap modul terintegrasi dengan manajer ketergantungan Komposer yang memudahkan pembaruan.
Testabilitas
Laravel menyertakan fitur dan pembantu yang membantu dalam pengujian melalui berbagai kasus pengujian. Fitur ini membantu dalam menjaga kode sesuai kebutuhan.
Rute
Laravel menyediakan pendekatan yang fleksibel kepada pengguna untuk menentukan rute dalam aplikasi web. Perutean membantu menskalakan aplikasi dengan cara yang lebih baik dan meningkatkan kinerjanya.
Manajemen konfigurasi
Aplikasi web yang dirancang di Laravel akan berjalan di lingkungan yang berbeda, yang berarti akan ada perubahan konstan dalam konfigurasinya. Laravel menyediakan pendekatan yang konsisten untuk menangani konfigurasi dengan cara yang efisien.
Query Builder dan ORM
Laravel menggabungkan pembuat kueri yang membantu dalam membuat kueri database menggunakan berbagai metode rantai sederhana. Ini menyediakanORM (Object Relational Mapper) dan ActiveRecord implementasi yang disebut Eloquent.
Pembuat Skema
Schema Builder mempertahankan definisi database dan skema dalam kode PHP. Ia juga memelihara jejak perubahan sehubungan dengan migrasi database.
Mesin Template
Laravel menggunakan Blade Template engine, bahasa template ringan yang digunakan untuk mendesain blok hierarki dan tata letak dengan blok yang telah ditentukan sebelumnya yang menyertakan konten dinamis.
Surel
Laravel mencakup a mail kelas yang membantu mengirim email dengan konten yang kaya dan lampiran dari aplikasi web.
Autentikasi
Otentikasi pengguna adalah fitur umum dalam aplikasi web. Laravel memudahkan perancangan otentikasi karena menyertakan fitur sepertiregister, forgot password dan send password reminders.
Redis
Laravel menggunakan Redisuntuk menyambung ke sesi yang ada dan cache tujuan umum. Redis berinteraksi dengan sesi secara langsung.
Antrian
Laravel menyertakan layanan antrian seperti mengirim email kepada sejumlah besar pengguna atau yang ditentukan Cronpekerjaan. Antrian ini membantu menyelesaikan tugas dengan lebih mudah tanpa menunggu tugas sebelumnya diselesaikan.
Bus Acara dan Perintah
Laravel 5.1 termasuk Command Busyang membantu dalam menjalankan perintah dan mengirimkan peristiwa dengan cara yang sederhana. Perintah di Laravel bertindak sesuai dengan siklus hidup aplikasi.
Untuk mengelola dependensi, Laravel menggunakan composer. Pastikan Anda memiliki Komposer yang diinstal pada sistem Anda sebelum Anda menginstal Laravel. Di bab ini, Anda akan melihat proses instalasi Laravel.
Anda harus mengikuti langkah-langkah yang diberikan di bawah ini untuk menginstal Laravel ke sistem Anda -
Step 1 - Kunjungi URL berikut dan unduh komposer untuk menginstalnya di sistem Anda.
https://getcomposer.org/download/
Step 2 - Setelah Composer diinstal, periksa penginstalan dengan mengetikkan perintah Composer di command prompt seperti yang ditunjukkan pada gambar layar berikut.
Step 3- Buat direktori baru di mana saja di sistem Anda untuk proyek Laravel baru Anda. Setelah itu, pindah ke jalur tempat Anda membuat direktori baru dan ketik perintah berikut di sana untuk menginstal Laravel.
composer create-project laravel/laravel –-prefer-dist
Sekarang, kita akan fokus pada penginstalan versi 5.7. Di Laravel versi 5.7, Anda dapat menginstal framework lengkap dengan mengetikkan perintah berikut -
composer create-project laravel/laravel test dev-develop
Output dari perintah tersebut seperti yang ditunjukkan di bawah ini -
Framework Laravel dapat langsung diinstal dengan develop branch yang menyertakan framework terbaru.
Step 4- Perintah di atas akan menginstal Laravel di direktori saat ini. Mulai layanan Laravel dengan menjalankan perintah berikut.
php artisan serve
Step 5 - Setelah menjalankan perintah di atas, Anda akan melihat layar seperti di bawah ini -
Step 6- Salin URL yang digarisbawahi abu-abu pada tangkapan layar di atas dan buka URL itu di browser. Jika Anda melihat layar berikut, itu berarti Laravel telah berhasil diinstal.
Struktur aplikasi di Laravel pada dasarnya adalah struktur folder, sub-folder dan file yang termasuk dalam sebuah proyek. Setelah kami membuat proyek di Laravel, kami mendapatkan gambaran umum tentang struktur aplikasi seperti yang ditunjukkan pada gambar di sini.
Snapshot yang ditampilkan di sini mengacu pada folder root Laravel yaitu laravel-project. Ini mencakup berbagai sub-folder dan file. Analisis folder dan file, bersama dengan aspek fungsionalnya diberikan di bawah ini -
Aplikasi
Ini adalah folder aplikasi dan menyertakan seluruh kode sumber proyek. Ini berisi peristiwa, pengecualian, dan deklarasi middleware. Folder aplikasi terdiri dari berbagai sub folder seperti yang dijelaskan di bawah ini -
Menghibur
Konsol menyertakan perintah artisan yang diperlukan untuk Laravel. Ini termasuk direktori bernamaCommands, di mana semua perintah dideklarasikan dengan tanda tangan yang sesuai. BerkasKernal.php memanggil perintah yang dideklarasikan dalam Inspire.php.
Jika kita perlu memanggil perintah tertentu di Laravel, maka kita harus membuat perubahan yang sesuai di direktori ini.
Acara
Folder ini mencakup semua acara untuk proyek tersebut.
Peristiwa digunakan untuk memicu aktivitas, meningkatkan kesalahan atau validasi yang diperlukan, dan memberikan fleksibilitas yang lebih besar. Laravel menyimpan semua kejadian di bawah satu direktori. File default yang disertakan adalahevent.php dimana semua kejadian dasar dideklarasikan.
Pengecualian
Folder ini berisi semua metode yang diperlukan untuk menangani pengecualian. Ini juga berisi filehandle.php yang menangani semua pengecualian.
Http
Itu Httpfolder memiliki sub-folder untuk pengontrol, middleware dan permintaan aplikasi. Karena Laravel mengikuti pola desain MVC, folder ini menyertakan model, pengontrol, dan tampilan yang ditentukan untuk direktori tertentu.
Itu Middleware sub-folder mencakup mekanisme middleware, yang terdiri dari mekanisme filter dan komunikasi antara respons dan permintaan.
Itu Requests sub-folder mencakup semua permintaan aplikasi.
Pekerjaan
Itu Jobsdirektori memelihara aktivitas yang diantrekan untuk aplikasi Laravel. Kelas dasar dibagi di antara semua Pekerjaan dan menyediakan lokasi sentral untuk menempatkannya di bawah satu atap.
Pendengar
Pendengar bergantung pada kejadian dan mereka menyertakan metode yang digunakan untuk menangani kejadian dan pengecualian. Misalnya, filelogin acara yang dideklarasikan meliputi a LoginListener peristiwa.
Kebijakan
Kebijakan adalah kelas PHP yang menyertakan logika otorisasi. Laravel menyertakan fitur untuk membuat semua logika otorisasi dalam kelas kebijakan di dalam sub folder ini.
Penyedia
Folder ini mencakup semua penyedia layanan yang diperlukan untuk mendaftarkan kejadian untuk server inti dan untuk mengkonfigurasi aplikasi Laravel.
Bootstrap
Folder ini membungkus semua skrip bootstrap aplikasi. Ini berisi sub-folder yaitucache, yang mencakup semua file yang terkait untuk menyimpan cache aplikasi web. Anda juga dapat menemukan file tersebutapp.php, yang menginisialisasi skrip yang diperlukan untuk bootstrap.
Config
Itu configfolder mencakup berbagai konfigurasi dan parameter terkait yang diperlukan untuk kelancaran fungsi aplikasi Laravel. Berbagai file yang termasuk dalam folder config seperti yang ditunjukkan pada gambar di sini. Nama file berfungsi sesuai fungsionalitas yang terkait dengannya.
Database
Seperti namanya, direktori ini menyertakan berbagai parameter untuk fungsionalitas database. Ini mencakup tiga sub-direktori seperti yang diberikan di bawah ini -
Seeds - Ini berisi kelas-kelas yang digunakan untuk database unit testing.
Migrations - Folder ini membantu dalam permintaan untuk memigrasi database yang digunakan dalam aplikasi web.
Factories - Folder ini digunakan untuk menghasilkan rekaman data dalam jumlah besar.
Publik
Ini adalah folder root yang membantu dalam menginisialisasi aplikasi Laravel. Ini termasuk file dan folder berikut -
.htaccess - File ini memberikan konfigurasi server.
javascript and css - File-file ini dianggap sebagai aset.
index.php - File ini diperlukan untuk inisialisasi aplikasi web.
Sumber daya
Direktori sumber berisi file-file yang meningkatkan aplikasi web Anda. Sub-folder yang termasuk dalam direktori ini dan tujuannya dijelaskan di bawah -
assets - Folder aset menyertakan file seperti LESS dan SCSS, yang diperlukan untuk menata aplikasi web.
lang - Folder ini menyertakan konfigurasi untuk lokalisasi atau internalisasi.
views - Tampilan adalah file atau template HTML yang berinteraksi dengan pengguna akhir dan memainkan peran utama dalam arsitektur MVC.
Perhatikan bahwa direktori sumber daya akan diratakan alih-alih memiliki folder aset. Representasi gambar yang sama ditunjukkan di bawah ini -
Penyimpanan
Ini adalah folder yang menyimpan semua log dan file yang diperlukan yang sering dibutuhkan saat proyek Laravel sedang berjalan. Sub-folder termasuk dalam direktori ini dan tujuannya diberikan di bawah ini -
app - Folder ini berisi file-file yang dipanggil secara berurutan.
framework - Berisi sesi, cache dan tampilan yang sering dipanggil.
Logs - Semua pengecualian dan log kesalahan dilacak di sub folder ini.
Tes
Semua kasus uji unit disertakan dalam direktori ini. Konvensi penamaan untuk penamaan kelas kasus uji adalahcamel_case dan mengikuti konvensi sesuai dengan fungsionalitas kelas.
Penjaja
Laravel sepenuhnya didasarkan pada dependensi Composer, misalnya untuk menginstal setup Laravel atau untuk menyertakan library pihak ketiga, dll. Folder Vendor menyertakan semua dependensi composer.
Selain file yang disebutkan di atas, Laravel juga menyertakan beberapa file lain yang memainkan peran utama dalam berbagai fungsi seperti konfigurasi GitHub, paket, dan pustaka pihak ketiga.
File yang termasuk dalam struktur aplikasi ditunjukkan di bawah ini -
Pada bab sebelumnya, kita telah melihat bahwa file konfigurasi dasar Laravel disertakan dalam file configdirektori. Dalam bab ini, mari kita bahas kategori yang termasuk dalam konfigurasi.
Konfigurasi Lingkungan
Variabel lingkungan adalah variabel yang memberikan daftar layanan web ke aplikasi web Anda. Semua variabel lingkungan dideklarasikan di.env file yang menyertakan parameter yang diperlukan untuk menginisialisasi konfigurasi.
Secara default, file .env file termasuk parameter berikut -
APP_ENV = local
APP_DEBUG = true
APP_KEY = base64:ZPt2wmKE/X4eEhrzJU6XX4R93rCwYG8E2f8QUA7kGK8 =
APP_URL = http://localhost
DB_CONNECTION = mysql
DB_HOST = 127.0.0.1
DB_PORT = 3306
DB_DATABASE = homestead
DB_USERNAME = homestead
DB_PASSWORD = secret
CACHE_DRIVER = file
SESSION_DRIVER = file
QUEUE_DRIVER = sync
REDIS_HOST = 127.0.0.1
REDIS_PASSWORD = null
REDIS_PORT = 6379
MAIL_DRIVER = smtp
MAIL_HOST = mailtrap.ioMAIL_PORT = 2525
MAIL_USERNAME = null
MAIL_PASSWORD = null
MAIL_ENCRYPTION = null
Poin Penting
Saat bekerja dengan file konfigurasi dasar Laravel, poin-poin berikut harus diperhatikan -
Itu .env file tidak boleh terikat pada kontrol sumber aplikasi, karena setiap pengembang atau pengguna memiliki beberapa konfigurasi lingkungan yang telah ditentukan untuk aplikasi web.
Untuk opsi cadangan, tim pengembangan harus menyertakan file .env.example file, yang seharusnya berisi konfigurasi default.
Pengambilan Variabel Lingkungan
Semua variabel lingkungan dideklarasikan di .env file dapat diakses oleh env-helperfungsi yang akan memanggil parameter masing-masing. Variabel-variabel ini juga terdaftar di$_ENVvariabel global setiap kali aplikasi menerima permintaan dari pengguna akhir. Anda dapat mengakses variabel lingkungan seperti yang ditunjukkan di bawah ini -
'env' => env('APP_ENV', 'production'),
env-helper fungsi dipanggil di app.php file yang disertakan dalam configmap. Contoh yang diberikan di atas memanggil parameter lokal dasar.
Mengakses Nilai Konfigurasi
Anda dapat dengan mudah mengakses nilai konfigurasi di mana saja dalam aplikasi menggunakan fungsi pembantu konfigurasi global. Jika nilai konfigurasi tidak diinisialisasi, nilai default dikembalikan.
Misalnya, untuk mengatur zona waktu default, kode berikut digunakan -
config(['app.timezone' => 'Asia/Kolkata']);
Caching Konfigurasi
Untuk meningkatkan kinerja dan meningkatkan aplikasi web, penting untuk menyimpan semua nilai konfigurasi. Perintah untuk menyimpan nilai konfigurasi adalah -
config:cache
Tangkapan layar berikut menunjukkan caching dalam pendekatan sistematis -
Mode Perawatan
Terkadang Anda mungkin perlu memperbarui beberapa nilai konfigurasi atau melakukan pemeliharaan di situs web Anda. Dalam kasus seperti itu, menyimpannyamaintenance mode, mempermudah Anda. Aplikasi web semacam itu yang disimpan dalam mode pemeliharaan, memunculkan pengecualian yaituMaintenanceModeException dengan kode status 503.
Anda dapat mengaktifkan mode pemeliharaan pada aplikasi web Laravel Anda menggunakan perintah berikut -
php artisan down
Tangkapan layar berikut menunjukkan bagaimana aplikasi web terlihat saat turun -
Setelah Anda selesai mengerjakan pembaruan dan pemeliharaan lainnya, Anda dapat menonaktifkan mode pemeliharaan pada aplikasi web Anda menggunakan perintah berikut -
php artisan up
Sekarang, Anda dapat menemukan bahwa situs web menunjukkan output dengan fungsi yang benar dan menggambarkan bahwa mode pemeliharaan sekarang dihapus seperti yang ditunjukkan di bawah ini -
Di Laravel, semua permintaan dipetakan dengan bantuan rute. Perutean dasar merutekan permintaan ke pengontrol terkait. Bab ini membahas tentang perutean di Laravel.
Perutean di Laravel mencakup kategori berikut -
- Perutean Dasar
- Parameter rute
- Rute Bernama
Perutean Dasar
Semua rute aplikasi terdaftar dalam app/routes.phpmengajukan. File ini memberi tahu Laravel tentang URI yang harus ditanggapi dan pengontrol terkait akan memberinya panggilan tertentu. Rute sampel untuk halaman selamat datang dapat dilihat seperti yang ditunjukkan pada gambar di bawah ini -
Route::get ('/', function () {
return view('welcome');});
Contoh
Perhatikan contoh berikut untuk memahami lebih lanjut tentang Perutean -
app/Http/routes.php
<?php
Route::get('/', function () {
return view('welcome');
});
resources/view/welcome.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Laravel</title>
<link href = "https://fonts.googleapis.com/css?family=Lato:100" rel = "stylesheet"
type = "text/css">
<style>
html, body {
height: 100%;
}
body {
margin: 0;
padding: 0;
width: 100%;
display: table;
font-weight: 100;
font-family: 'Lato';
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
}
.content {
text-align: center;
display: inline-block;
}
.title {
font-size: 96px;
}
</style>
</head>
<body>
<div class = "container">
<div class = "content">
<div class = "title">Laravel 5.1</div>
</div>
</div>
</body>
</html>
Mekanisme perutean ditunjukkan pada gambar yang diberikan di bawah ini -
Mari kita sekarang memahami langkah-langkah yang terlibat dalam mekanisme perutean secara detail -
Step 1 - Awalnya, kita harus mengeksekusi URL root aplikasi.
Step 2 - Sekarang, URL yang dieksekusi harus cocok dengan metode yang sesuai di route.phpmengajukan. Dalam kasus ini, itu harus cocok dengan metode dan URL root ('/'). Ini akan menjalankan fungsi terkait.
Step 3 - Fungsi tersebut memanggil file template resources/views/welcome.blade.php. Selanjutnya, fungsi tersebut memanggil view() berfungsi dengan argumen ‘welcome’ tanpa menggunakan blade.php.
Ini akan menghasilkan output HTML seperti yang ditunjukkan pada gambar di bawah ini -
Parameter Rute
Terkadang di aplikasi web, Anda mungkin perlu menangkap parameter yang diteruskan dengan URL. Untuk ini, Anda harus mengubah kode diroutes.php mengajukan.
Anda dapat menangkap parameter di routes.php mengajukan dengan dua cara seperti yang dibahas di sini -
Parameter yang Diperlukan
Parameter ini adalah parameter yang harus ditangkap untuk merutekan aplikasi web. Misalnya, penting untuk mengambil nomor identifikasi pengguna dari URL. Ini dapat dimungkinkan dengan menentukan parameter rute seperti yang ditunjukkan di bawah ini -
Route::get('ID/{id}',function($id) {
echo 'ID: '.$id;
});
Parameter Opsional
Terkadang pengembang dapat menghasilkan parameter sebagai opsional dan dimungkinkan dengan penyertaan ?setelah nama parameter di URL. Penting untuk menyimpan nilai default yang disebutkan sebagai nama parameter. Lihat contoh berikut yang menunjukkan cara menentukan parameter opsional -
Route::get('user/{name?}', function ($name = 'TutorialsPoint') { return $name;});
Contoh di atas memeriksa apakah nilainya cocok dengan TutorialsPoint dan dengan demikian merutekan ke URL yang ditentukan.
Rute Bernama
Rute yang diberi nama memungkinkan cara yang nyaman untuk membuat rute. Rangkaian rute dapat ditentukan menggunakan metode nama ke definisi rute. Kode berikut menunjukkan contoh untuk membuat rute bernama dengan pengontrol -
Route::get('user/profile', 'UserController@showProfile')->name('profile');
Pengontrol pengguna akan memanggil fungsi tersebut showProfile dengan parameter sebagai profile. Parameter yang digunakanname metode ke definisi rute.
Middleware bertindak sebagai jembatan antara permintaan dan tanggapan. Ini adalah jenis mekanisme penyaringan. Bab ini menjelaskan tentang mekanisme middleware di Laravel.
Laravel menyertakan middleware yang memverifikasi apakah pengguna aplikasi tersebut diautentikasi atau tidak. Jika pengguna diautentikasi, ia dialihkan ke halaman beranda sebaliknya, jika tidak, ia dialihkan ke halaman login.
Middleware dapat dibuat dengan menjalankan perintah berikut -
php artisan make:middleware <middleware-name>
Ganti <middleware-name>dengan nama middleware Anda. Middleware yang Anda buat dapat dilihat diapp/Http/Middleware direktori.
Contoh
Perhatikan contoh berikut untuk memahami mekanisme middleware -
Step 1- Sekarang mari kita buat AgeMiddleware. Untuk membuatnya, kita perlu menjalankan perintah berikut -
php artisan make:middleware AgeMiddleware
Step 2 - Setelah berhasil mengeksekusi perintah, Anda akan menerima output berikut -
Step 3 - AgeMiddleware akan dibuat pada app/Http/Middleware. File yang baru dibuat akan memiliki kode berikut yang sudah dibuat untuk Anda.
<?php
namespace App\Http\Middleware;
use Closure;
class AgeMiddleware {
public function handle($request, Closure $next) { return $next($request);
}
}
Mendaftarkan Middleware
Kita perlu mendaftarkan setiap middleware sebelum menggunakannya. Ada dua jenis Middleware di Laravel.
- Middleware Global
- Rute Middleware
Itu Global Middleware akan berjalan di setiap permintaan HTTP aplikasi, sedangkan Route Middlewareakan ditugaskan ke rute tertentu. Middleware dapat didaftarkan diapp/Http/Kernel.php. File ini berisi dua properti $middleware dan $routeMiddleware. $middleware properti digunakan untuk mendaftar Global Middleware dan $routeMiddleware properti digunakan untuk mendaftarkan middleware khusus rute.
Untuk mendaftarkan middleware global, daftarkan kelas di akhir properti $ middleware.
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
];
Untuk mendaftarkan middleware khusus rute, tambahkan kunci dan nilai ke properti $ routeMiddleware.
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
];
Contoh
Kami telah menciptakan AgeMiddlewarepada contoh sebelumnya. Sekarang kita dapat mendaftarkannya di properti middleware spesifik rute. Kode untuk pendaftaran itu ditampilkan di bawah ini.
Berikut ini adalah kode untuk app/Http/Kernel.php -
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel {
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
];
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'Age' => \App\Http\Middleware\AgeMiddleware::class,
];
}
Parameter Middleware
Kita juga bisa melewatkan parameter dengan Middleware. Misalnya, jika aplikasi Anda memiliki peran berbeda seperti pengguna, admin, admin super, dll. Dan Anda ingin mengautentikasi tindakan berdasarkan peran, ini dapat dicapai dengan meneruskan parameter dengan middleware. Middleware yang kita buat berisi fungsi berikut dan kita bisa meneruskan argumen kustom kita setelah$next argumen.
public function handle($request, Closure $next) {
return $next($request);
}
Contoh
Step 1 - Buat RoleMiddleware dengan menjalankan perintah berikut -
php artisan make:middleware RoleMiddleware
Step 2 - Setelah eksekusi berhasil, Anda akan menerima output berikut -
Step 3 - Tambahkan kode berikut dalam metode pegangan RoleMiddlewareat yang baru dibuat app/Http/Middleware/RoleMiddleware.php.
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) { echo "Role: ".$role;
return $next($request);
}
}
Step 4 - Daftarkan RoleMiddleware di app\Http\Kernel.phpmengajukan. Tambahkan baris yang disorot dengan warna abu-abu di file itu untuk mendaftarkan RoleMiddleware.
Step 5 - Jalankan perintah berikut untuk membuat TestController -
php artisan make:controller TestController --plain
Step 6 - Setelah berhasil menjalankan langkah di atas, Anda akan menerima output berikut -
Step 7 - Salin baris kode berikut ke app/Http/TestController.php mengajukan.
app/Http/TestController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class TestController extends Controller {
public function index() {
echo "<br>Test Controller.";
}
}
Step 8 - Tambahkan baris kode berikut ini app/Http/routes.php mengajukan.
app/Http/routes.php
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
Step 9 - Kunjungi URL berikut untuk menguji Middleware dengan parameter
http://localhost:8000/role
Step 10 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Middleware yang Dapat Diakhiri
Middleware yang dapat dihentikan melakukan beberapa tugas setelah respons dikirim ke browser. Ini dapat dilakukan dengan membuat middleware denganterminatemetode di middleware. Middleware yang dapat dihentikan harus terdaftar dengan middleware global. Metode terminate akan menerima dua argumen$request dan $response. Metode penghentian dapat dibuat seperti yang ditunjukkan pada kode berikut.
Contoh
Step 1 - Buat TerminateMiddleware dengan menjalankan perintah di bawah ini.
php artisan make:middleware TerminateMiddleware
Step 2 - Langkah di atas akan menghasilkan keluaran sebagai berikut -
Step 3 - Salin kode berikut yang baru dibuat TerminateMiddleware di app/Http/Middleware/TerminateMiddleware.php.
<?php
namespace App\Http\Middleware;
use Closure;
class TerminateMiddleware {
public function handle($request, Closure $next) {
echo "Executing statements of handle method of TerminateMiddleware.";
return $next($request);
}
public function terminate($request, $response) {
echo "<br>Executing statements of terminate method of TerminateMiddleware.";
}
}
Step 4 - Daftarkan TerminateMiddleware di app\Http\Kernel.phpmengajukan. Tambahkan baris yang disorot dengan warna abu-abu di file itu untuk mendaftarkan TerminateMiddleware.
Step 5 - Jalankan perintah berikut untuk membuat ABCController.
php artisan make:controller ABCController --plain
Step 6 - Setelah eksekusi URL berhasil, Anda akan menerima output berikut -
Step 7 - Salin kode berikut ke app/Http/ABCController.php mengajukan.
app/Http/ABCController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ABCController extends Controller {
public function index() {
echo "<br>ABC Controller.";
}
}
Step 8 - Tambahkan baris kode berikut ini app/Http/routes.php mengajukan.
app/Http/routes.php
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'ABCController@index',
]);
Step 9 - Kunjungi URL berikut untuk menguji Terminable Middleware.
http://localhost:8000/terminate
Step 10 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Namespaces dapat didefinisikan sebagai kelas elemen di mana setiap elemen memiliki nama unik untuk kelas terkait. Ini dapat dibagikan dengan elemen di kelas lain.
Deklarasi namespace
Itu use kata kunci memungkinkan pengembang untuk mempersingkat namespace.
use <namespace-name>;
Namespace default yang digunakan di Laravel adalah App, namun pengguna dapat mengubah namespace agar sesuai dengan aplikasi web. Membuat namespace yang ditentukan pengguna dengan perintah artisan disebutkan sebagai berikut -
php artisan app:name SocialNet
Namespace setelah dibuat dapat mencakup berbagai fungsi yang dapat digunakan dalam pengontrol dan berbagai kelas.
Dalam kerangka MVC, huruf 'C' adalah singkatan dari Controller. Ini bertindak sebagai lalu lintas pengarah antara Tampilan dan Model. Pada chapter ini, Anda akan belajar tentang Pengendali di Laravel.
Membuat Pengontrol
Buka command prompt atau terminal berdasarkan sistem operasi yang Anda gunakan dan ketik perintah berikut untuk membuat pengontrol menggunakan Artisan CLI (Command Line Interface).
php artisan make:controller <controller-name> --plain
Ganti <controller-name> dengan nama pengontrol Anda. Ini akan membuat konstruktor biasa saat kita meneruskan argumen -plain. Jika Anda tidak ingin membuat konstruktor biasa, abaikan saja argumennya. Konstruktor yang dibuat dapat dilihat diapp/Http/Controllers.
Anda akan melihat bahwa beberapa pengkodean dasar telah dilakukan untuk Anda dan Anda dapat menambahkan pengkodean khusus Anda. Kontroler yang dibuat dapat dipanggil dari routes.php dengan sintaks berikut.
Sintaksis
Route::get(‘base URI’,’controller@method’);
Contoh
Step 1 - Jalankan perintah berikut untuk membuat UserController.
php artisan make:controller UserController --plain
Step 2 - Setelah eksekusi berhasil, Anda akan menerima output berikut.
Step 3 - Anda dapat melihat pengontrol yang dibuat di app/Http/Controller/UserController.php dengan beberapa pengkodean dasar yang sudah ditulis untuk Anda dan Anda dapat menambahkan pengkodean Anda sendiri berdasarkan kebutuhan Anda.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class UserController extends Controller {
//
}
Pengontrol Middleware
Kami telah melihat middleware sebelumnya dan dapat digunakan dengan pengontrol juga. Middleware juga dapat ditetapkan ke rute pengontrol atau di dalam konstruktor pengontrol Anda. Anda dapat menggunakan metode middleware untuk menetapkan middleware ke pengontrol. Middleware terdaftar juga dapat dibatasi untuk metode kontroler tertentu.
Menugaskan Middleware ke Route
Route::get('profile', [
'middleware' => 'auth',
'uses' => 'UserController@showProfile'
]);
Di sini kita menetapkan middleware auth ke UserController di rute profil.
Menetapkan Middleware dalam konstruktor Pengendali
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class UserController extends Controller {
public function __construct() {
$this->middleware('auth');
}
}
Di sini kami menugaskan auth middleware menggunakan metode middleware di UserController konstruktor.
Contoh
Step 1 - Tambahkan baris kode berikut ke app/Http/routes.php file dan simpan.
routes.php
<?php
Route::get('/usercontroller/path',[
'middleware' => 'First',
'uses' => 'UserController@showPath'
]);
Step 2 - Buat middleware bernama FirstMiddleware dengan menjalankan baris kode berikut.
php artisan make:middleware FirstMiddleware
Step 3 - Tambahkan kode berikut ke dalam handle metode FirstMiddleware yang baru dibuat di app/Http/Middleware.
FirstMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
class FirstMiddleware {
public function handle($request, Closure $next) { echo '<br>First Middleware'; return $next($request);
}
}
Step 4 - Buat middleware bernama SecondMiddleware dengan menjalankan perintah berikut.
php artisan make:middleware SecondMiddleware
Step 5 - Tambahkan kode berikut dalam metode pegangan dari SecondMiddleware yang baru dibuat di app/Http/Middleware.
SecondMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
class SecondMiddleware {
public function handle($request, Closure $next) { echo '<br>Second Middleware'; return $next($request);
}
}
Step 6 - Buat pengontrol bernama UserController dengan menjalankan baris berikut.
php artisan make:controller UserController --plain
Step 7 - Setelah eksekusi URL berhasil, Anda akan menerima output berikut -
Step 8 - Salin kode berikut ke app/Http/UserController.php mengajukan.
app/Http/UserController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class UserController extends Controller {
public function __construct() {
$this->middleware('Second');
}
public function showPath(Request $request) { $uri = $request->path(); echo '<br>URI: '.$uri;
$url = $request->url();
echo '<br>';
echo 'URL: '.$url; $method = $request->method(); echo '<br>'; echo 'Method: '.$method;
}
}
Step 9 - Sekarang luncurkan server web internal php dengan menjalankan perintah berikut, jika Anda belum menjalankannya.
php artisan serve
Step 10 - Kunjungi URL berikut.
http://localhost:8000/usercontroller/path
Step 11 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Pengontrol Sumber Daya yang Tenang
Seringkali saat membuat aplikasi kita perlu melakukan CRUD (Create, Read, Update, Delete)operasi. Laravel membuat pekerjaan ini mudah bagi kami. Cukup buat pengontrol dan Laravel secara otomatis akan menyediakan semua metode untuk operasi CRUD. Anda juga dapat mendaftarkan satu rute untuk semua metode di file routes.php.
Contoh
Step 1 - Buat pengontrol bernama MyController dengan menjalankan perintah berikut.
php artisan make:controller MyController
Step 2 - Tambahkan kode berikut
app/Http/Controllers/MyController.php mengajukan.
app/Http/Controllers/MyController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class MyController extends Controller {
public function index() {
echo 'index';
}
public function create() {
echo 'create';
}
public function store(Request $request) { echo 'store'; } public function show($id) {
echo 'show';
}
public function edit($id) { echo 'edit'; } public function update(Request $request, $id) { echo 'update'; } public function destroy($id) {
echo 'destroy';
}
}
Step 3 - Tambahkan baris kode berikut ini app/Http/routes.php mengajukan.
app/Http/routes.php
Route::resource('my','MyController');
Step 4- Kami sekarang mendaftarkan semua metode MyController dengan mendaftarkan pengontrol dengan sumber daya. Di bawah ini adalah tabel tindakan yang ditangani oleh pengontrol sumber daya.
Kata kerja | Jalan | Tindakan | Nama Rute |
---|---|---|---|
DAPATKAN | /saya | indeks | my.index |
DAPATKAN | / my / create | membuat | my.create |
POS | /saya | toko | toko saya |
DAPATKAN | /saya saya} | menunjukkan | my.show |
DAPATKAN | / my / {my} / edit | edit | my.edit |
PUT / PATCH | /saya saya} | memperbarui | my.update |
MENGHAPUS | /saya saya} | menghancurkan | my.destroy |
Step 5 - Coba jalankan URL yang ditunjukkan pada tabel berikut.
URL | Deskripsi | Gambar Keluaran |
---|---|---|
http: // localhost: 8000 / my | Menjalankan metode indeks MyController.php | indeks |
http: // localhost: 8000 / my / create | Menjalankan metode create MyController.php | membuat |
http: // localhost: 8000 / my / 1 | Menjalankan metode pertunjukan MyController.php | menunjukkan |
http: // localhost: 8000 / my / 1 / edit | Menjalankan metode edit MyController.php | edit |
Pengontrol Implisit
Pengontrol Implisit memungkinkan Anda menentukan satu rute untuk menangani setiap tindakan di pengontrol. Anda dapat mendefinisikannya di file route.php denganRoute:controller metode seperti yang ditunjukkan di bawah ini.
Route::controller(‘base URI’,’<class-name-of-the-controller>’);
Ganti <class-name-of-the-controller> dengan nama kelas yang telah Anda berikan ke pengontrol Anda.
Nama metode pengontrol harus dimulai dengan kata kerja HTTP seperti get atau post. Jika Anda memulainya dengan get, itu hanya akan menangani permintaan get dan jika dimulai dengan posting maka itu akan menangani permintaan posting. Setelah kata kerja HTTP Anda bisa, Anda dapat memberikan nama apa pun untuk metode tersebut, tetapi metode tersebut harus mengikuti versi kasus judul dari URI.
Contoh
Step 1- Jalankan perintah di bawah ini untuk membuat pengontrol. Kami tetap menggunakan nama kelasImplicitController. Anda dapat memberikan nama pilihan Anda kepada kelas.
php artisan make:controller ImplicitController --plain
Step 2 - Setelah berhasil menjalankan langkah 1, Anda akan menerima keluaran berikut -
Step 3 - Salin kode berikut ke
app/Http/Controllers/ImplicitController.php mengajukan.
app/Http/Controllers/ImplicitController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ImplicitController extends Controller {
/**
* Responds to requests to GET /test
*/
public function getIndex() {
echo 'index method';
}
/**
* Responds to requests to GET /test/show/1
*/
public function getShow($id) {
echo 'show method';
}
/**
* Responds to requests to GET /test/admin-profile
*/
public function getAdminProfile() {
echo 'admin profile method';
}
/**
* Responds to requests to POST /test/profile
*/
public function postProfile() {
echo 'profile method';
}
}
Step 4 - Tambahkan baris berikut ke app/Http/routes.php file untuk merutekan permintaan ke pengontrol tertentu.
app/Http/routes.php
Route::controller('test','ImplicitController');
Injeksi Konstruktor
Kontainer layanan Laravel digunakan untuk menyelesaikan semua pengontrol Laravel. Hasilnya, Anda dapat memberi petunjuk jenis apa pun dependensi yang mungkin diperlukan pengontrol Anda dalam konstruktornya. Dependensi akan secara otomatis diselesaikan dan dimasukkan ke dalam instance pengontrol.
Contoh
Step 1 - Tambahkan kode berikut ke app/Http/routes.php mengajukan.
app/Http/routes.php
class MyClass{
public $foo = 'bar';
}
Route::get('/myclass','ImplicitController@index');
Step 2 - Tambahkan kode berikut ke
app/Http/Controllers/ImplicitController.php mengajukan.
app/Http/Controllers/ImplicitController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ImplicitController extends Controller {
private $myclass; public function __construct(\MyClass $myclass) {
$this->myclass = $myclass;
}
public function index() {
dd($this->myclass);
}
}
Step 3 - Kunjungi URL berikut untuk menguji injeksi konstruktor.
http://localhost:8000/myclass
Step 4 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Metode Injeksi
Selain injeksi konstruktor, Anda juga dapat mengetik - ketergantungan petunjuk pada metode tindakan pengontrol Anda.
Contoh
Step 1 - Tambahkan kode berikut ke app/Http/routes.php mengajukan.
app/Http/routes.php
class MyClass{
public $foo = 'bar';
}
Route::get('/myclass','ImplicitController@index');
Step 2 - Tambahkan kode berikut ke
app/Http/Controllers/ImplicitController.php mengajukan.
app/Http/Controllers/ImplicitController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ImplicitController extends Controller {
public function index(\MyClass $myclass) { dd($myclass);
}
}
Step 3 - Kunjungi URL berikut untuk menguji injeksi konstruktor.
http://localhost:8000/myclass
Ini akan menghasilkan keluaran sebagai berikut -
Di chapter ini, Anda akan mempelajari lebih detail tentang Requests di Laravel.
Mengambil URI Permintaan
Itu “path”metode digunakan untuk mengambil URI yang diminta. Ituismetode digunakan untuk mengambil URI yang diminta yang cocok dengan pola tertentu yang ditentukan dalam argumen metode. Untuk mendapatkan URL lengkapnya, kita bisa menggunakanurl metode.
Contoh
Step 1 - Jalankan perintah di bawah ini untuk membuat pengontrol baru bernama UriController.
php artisan make:controller UriController –plain
Step 2 - Setelah eksekusi URL berhasil, Anda akan menerima output berikut -
Step 3 - Setelah membuat pengontrol, tambahkan kode berikut di file itu.
app/Http/Controllers/UriController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class UriController extends Controller {
public function index(Request $request) { // Usage of path method $path = $request->path(); echo 'Path Method: '.$path;
echo '<br>';
// Usage of is method
$pattern = $request->is('foo/*');
echo 'is Method: '.$pattern; echo '<br>'; // Usage of url method $url = $request->url(); echo 'URL method: '.$url;
}
}
Step 4 - Tambahkan baris berikut di app/Http/route.php mengajukan.
app/Http/route.php
Route::get('/foo/bar','UriController@index');
Step 5 - Kunjungi URL berikut.
http://localhost:8000/foo/bar
Step 6 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Mengambil Input
Nilai input dapat dengan mudah diambil di Laravel. Tidak peduli metode apa yang digunakan“get” atau “post”, metode Laravel akan mengambil nilai input untuk kedua metode dengan cara yang sama. Ada dua cara untuk mendapatkan kembali nilai masukan.
- Menggunakan metode input ()
- Menggunakan properti dari instance Request
Menggunakan metode input ()
Itu input()Metode mengambil satu argumen, nama bidang dalam formulir. Misal form berisi field username maka kita bisa mengaksesnya dengan cara berikut.
$name = $request->input('username');
Menggunakan properti dari instance Request
Seperti input() metode, kita bisa mendapatkan properti nama pengguna langsung dari contoh permintaan.
$request->username
Contoh
Perhatikan contoh berikut untuk memahami lebih lanjut tentang Permintaan -
Step 1 - Buat formulir Pendaftaran, di mana pengguna dapat mendaftarkan dirinya dan menyimpan formulir di resources/views/register.php
<html>
<head>
<title>Form Example</title>
</head>
<body>
<form action = "/user/register" method = "post">
<input type = "hidden" name = "_token" value = "<?php echo csrf_token() ?>">
<table>
<tr>
<td>Name</td>
<td><input type = "text" name = "name" /></td>
</tr>
<tr>
<td>Username</td>
<td><input type = "text" name = "username" /></td>
</tr>
<tr>
<td>Password</td>
<td><input type = "text" name = "password" /></td>
</tr>
<tr>
<td colspan = "2" align = "center">
<input type = "submit" value = "Register" />
</td>
</tr>
</table>
</form>
</body>
</html>
Step 2 - Jalankan perintah di bawah ini untuk membuat file UserRegistration pengontrol.
php artisan make:controller UserRegistration --plain
Step 3 - Setelah berhasil menjalankan langkah di atas, Anda akan menerima output berikut -
Step 4 - Salin kode berikut ini
app/Http/Controllers/UserRegistration.php pengontrol.
app/Http/Controllers/UserRegistration.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class UserRegistration extends Controller {
public function postRegister(Request $request) {
//Retrieve the name input field
$name = $request->input('name');
echo 'Name: '.$name; echo '<br>'; //Retrieve the username input field $username = $request->username; echo 'Username: '.$username;
echo '<br>';
//Retrieve the password input field
$password = $request->password;
echo 'Password: '.$password;
}
}
Step 5 - Tambahkan baris berikut app/Http/routes.php mengajukan.
app/Http/routes.php
Route::get('/register',function() {
return view('register');
});
Route::post('/user/register',array('uses'=>'UserRegistration@postRegister'));
Step 6- Kunjungi URL berikut dan Anda akan melihat formulir pendaftaran seperti yang ditunjukkan pada gambar di bawah ini. Ketik detail pendaftaran dan klik Daftar dan Anda akan melihat di halaman kedua bahwa kami telah mengambil dan menampilkan detail pendaftaran pengguna.
http://localhost:8000/register
Step 7 - Outputnya akan terlihat seperti gambar di bawah ini.
Cookie memainkan peran penting saat menangani sesi pengguna di aplikasi web. Di bab ini, Anda akan belajar tentang bekerja dengan cookie di aplikasi web berbasis Laravel.
Membuat Cookie
Cookie dapat dibuat oleh cookie helper global Laravel. Ini adalah contoh dariSymfony\Component\HttpFoundation\Cookie. Cookie dapat dilampirkan ke respons menggunakan metode withCookie (). Buat instance respons dariIlluminate\Http\Responsekelas untuk memanggil metode withCookie (). Cookie yang dihasilkan oleh Laravel dienkripsi dan ditandatangani dan tidak dapat dimodifikasi atau dibaca oleh klien.
Berikut adalah contoh kode dengan penjelasannya.
//Create a response instance
$response = new Illuminate\Http\Response('Hello World');
//Call the withCookie() method with the response method
$response->withCookie(cookie('name', 'value', $minutes));
//return the response
return $response;
Metode Cookie () akan mengambil 3 argumen. Argumen pertama adalah nama cookie, argumen kedua adalah nilai cookie dan argumen ketiga adalah durasi cookie setelah cookie akan dihapus secara otomatis.
Cookie dapat disetel selamanya dengan menggunakan metode selamanya seperti yang ditunjukkan pada kode di bawah ini.
$response->withCookie(cookie()->forever('name', 'value'));
Mengambil Cookie
Setelah kami menyetel cookie, kami dapat mengambil cookie dengan metode cookie (). Metode cookie () ini hanya akan mengambil satu argumen yang akan menjadi nama cookie. Metode cookie dapat dipanggil dengan menggunakan contohIlluminate\Http\Request.
Berikut ini contoh kode.
//’name’ is the name of the cookie to retrieve the value of
$value = $request->cookie('name');
Contoh
Perhatikan contoh berikut untuk memahami lebih lanjut tentang Cookies -
Step 1 - Jalankan perintah di bawah ini untuk membuat pengontrol di mana kita akan memanipulasi cookie.
php artisan make:controller CookieController --plain
Step 2 - Setelah eksekusi berhasil, Anda akan menerima output berikut -
Step 3 - Salin kode berikut ini
app/Http/Controllers/CookieController.php mengajukan.
app/Http/Controllers/CookieController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class CookieController extends Controller {
public function setCookie(Request $request) { $minutes = 1;
$response = new Response('Hello World'); $response->withCookie(cookie('name', 'virat', $minutes)); return $response;
}
public function getCookie(Request $request) { $value = $request->cookie('name'); echo $value;
}
}
Step 4 - Tambahkan baris berikut app/Http/routes.php file.
app/Http/routes.php
Route::get('/cookie/set','CookieController@setCookie');
Route::get('/cookie/get','CookieController@getCookie');
Step 5 - Kunjungi URL berikut untuk menyetel cookie.
http://localhost:8000/cookie/set
Step 6- Outputnya akan muncul seperti gambar di bawah ini. Jendela yang muncul di tangkapan layar diambil dari firefox tetapi tergantung pada browser Anda, cookie juga dapat diperiksa dari opsi cookie.
Step 7 - Kunjungi URL berikut untuk mendapatkan cookie dari URL di atas.
http://localhost:8000/cookie/get
Step 8 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Aplikasi web menanggapi permintaan pengguna dengan banyak cara bergantung pada banyak parameter. Bab ini menjelaskan kepada Anda secara rinci tentang tanggapan dalam aplikasi web Laravel.
Respon Dasar
Laravel menyediakan beberapa cara berbeda untuk mengembalikan respons. Respon dapat dikirim baik dari rute atau dari pengontrol. Respon dasar yang dapat dikirim adalah string sederhana seperti yang ditunjukkan pada contoh kode di bawah ini. String ini akan secara otomatis diubah menjadi respons HTTP yang sesuai.
Contoh
Step 1 - Tambahkan kode berikut ke app/Http/routes.php mengajukan.
app/Http/routes.php
Route::get('/basic_response', function () {
return 'Hello World';
});
Step 2 - Visit URL berikut untuk menguji respon dasar.
http://localhost:8000/basic_response
Step 3 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Melampirkan Header
Respons bisa dilampirkan ke header menggunakan metode header (). Kami juga dapat melampirkan rangkaian header seperti yang ditunjukkan pada kode contoh di bawah ini.
return response($content,$status)
->header('Content-Type', $type)
->header('X-Header-One', 'Header Value')
->header('X-Header-Two', 'Header Value');
Contoh
Perhatikan contoh berikut untuk memahami lebih lanjut tentang Respon -
Step 1 - Tambahkan kode berikut ke app/Http/routes.php mengajukan.
app/Http/routes.php
Route::get('/header',function() {
return response("Hello", 200)->header('Content-Type', 'text/html');
});
Step 2 - Kunjungi URL berikut untuk menguji tanggapan dasar.
http://localhost:8000/header
Step 3 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Melampirkan Cookies
Itu withcookie()metode helper digunakan untuk melampirkan cookie. Cookie yang dihasilkan dengan metode ini dapat dilampirkan dengan memanggilwithcookie()metode dengan contoh respon. Secara default, semua cookie yang dihasilkan oleh Laravel dienkripsi dan ditandatangani sehingga tidak dapat diubah atau dibaca oleh klien.
Contoh
Perhatikan contoh berikut untuk memahami lebih lanjut tentang melampirkan cookie -
Step 1 - Tambahkan kode berikut ke app/Http/routes.php mengajukan.
app/Http/routes.php
Route::get('/cookie',function() {
return response("Hello", 200)->header('Content-Type', 'text/html')
->withcookie('name','Virat Gandhi');
});
Step 2 - Visit URL berikut untuk menguji respon dasar.
http://localhost:8000/cookie
Step 3 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Tanggapan JSON
Tanggapan JSON dapat dikirim menggunakan metode json. Metode ini akan secara otomatis menyetel header Jenis Konten keapplication/json. Itujson metode secara otomatis akan mengubah array menjadi yang sesuai json tanggapan.
Contoh
Perhatikan contoh berikut untuk memahami lebih lanjut tentang JSON Response -
Step 1 - Tambahkan baris berikut app/Http/routes.php mengajukan.
app/Http/routes.php
Route::get('json',function() {
return response()->json(['name' => 'Virat Gandhi', 'state' => 'Gujarat']);
});
Step 2 - Kunjungi URL berikut untuk menguji respons json.
http://localhost:8000/json
Step 3 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Dalam kerangka MVC, surat itu “V” berdiri untuk Views. Ini memisahkan logika aplikasi dan logika presentasi. Tampilan disimpan diresources/viewsdirektori. Umumnya view tersebut berisi HTML yang akan disajikan oleh aplikasi.
Contoh
Perhatikan contoh berikut untuk memahami lebih lanjut tentang Views -
Step 1 - Salin kode berikut dan simpan di resources/views/test.php
<html>
<body>
<h1>Hello, World</h1>
</body>
</html>
Step 2 - Tambahkan baris berikut app/Http/routes.php file untuk mengatur rute untuk tampilan di atas.
app/Http/routes.php
Route::get('/test', function() {
return view('test');
});
Step 3 - Kunjungi URL berikut untuk melihat keluaran tampilan.
http://localhost:8000/test
Step 4 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Meneruskan Data ke Views
Saat membangun aplikasi, mungkin diperlukan untuk meneruskan data ke tampilan. Meneruskan array untuk melihat fungsi pembantu. Setelah melewati sebuah array, kita dapat menggunakan kunci tersebut untuk mendapatkan nilai kunci tersebut di file HTML.
Contoh
Perhatikan contoh berikut untuk memahami lebih lanjut tentang meneruskan data ke tampilan -
Step 1 - Salin kode berikut dan simpan di resources/views/test.php
<html>
<body>
<h1><?php echo $name; ?></h1>
</body>
</html>
Step 2 - Tambahkan baris berikut app/Http/routes.php file untuk mengatur rute untuk tampilan di atas.
app/Http/routes.php
Route::get('/test', function() {
return view('test',[‘name’=>’Virat Gandhi’]);
});
Step 3 - Nilai nama kunci akan diteruskan ke file test.php dan $ name akan diganti dengan nilai itu.
Step 4 - Kunjungi URL berikut untuk melihat keluaran tampilan.
http://localhost:8000/test
Step 5 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Berbagi Data dengan semua Tampilan
Kami telah melihat bagaimana kami dapat mengirimkan data ke tampilan tetapi terkadang, ada kebutuhan untuk meneruskan data ke semua tampilan. Laravel membuat ini lebih sederhana. Ada metode yang disebutshare()yang dapat digunakan untuk tujuan ini. Itushare()metode akan mengambil dua argumen, kunci dan nilai. Khasshare()metode dapat dipanggil dari metode boot penyedia layanan. Kami dapat menggunakan penyedia layanan apa pun,AppServiceProvider atau penyedia layanan kami sendiri.
Contoh
Perhatikan contoh berikut untuk memahami lebih lanjut tentang berbagi data dengan semua tampilan -
Step 1 - Tambahkan baris berikut app/Http/routes.php mengajukan.
app/Http/routes.php
Route::get('/test', function() {
return view('test');
});
Route::get('/test2', function() {
return view('test2');
});
Step 2 - Buat dua file tampilan - test.php dan test2.phpdengan kode yang sama. Ini adalah dua file yang akan berbagi data. Salin kode berikut di kedua file.resources/views/test.php & resources/views/test2.php
<html>
<body>
<h1><?php echo $name; ?></h1>
</body>
</html>
Step 3 - Ubah kode metode boot di file app/Providers/AppServiceProvider.phpseperti gambar dibawah. (Di sini, kami telah menggunakan metode berbagi dan data yang telah kami berikan akan dibagikan dengan semua tampilan.)app/Providers/AppServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider {
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot() {
view()->share('name', 'Virat Gandhi');
}
/**
* Register any application services.
*
* @return void
*/
public function register() {
//
}
}
Step 4 - Visit URL berikut.
http://localhost:8000/test
http://localhost:8000/test2
Step 5 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Laravel 5.1 memperkenalkan konsep penggunaan Blade, Mesin template untuk mendesain tata letak yang unik. Tata letak yang dirancang demikian dapat digunakan oleh tampilan lain, dan mencakup desain dan struktur yang konsisten.
Jika dibandingkan dengan mesin templating lainnya, Blade memiliki keunikan dalam beberapa hal berikut -
Itu tidak membatasi pengembang untuk menggunakan kode PHP biasa dalam tampilan.
Tampilan blade yang didesain, dikompilasi, dan di-cache hingga diubah.
Struktur direktori lengkap Laravel ditunjukkan pada tangkapan layar yang diberikan di sini.
Anda dapat mengamati bahwa semua tampilan disimpan di file resources/views direktori dan tampilan default untuk framework Laravel adalah welcome.blade.php.
Harap dicatat bahwa template blade lainnya juga dibuat dengan cara yang sama.
Langkah-langkah Membuat Tata Letak Template Blade
Anda harus menggunakan langkah-langkah berikut untuk membuat tata letak template blade -
Langkah 1
Buat folder tata letak di dalam resources/viewsmap. Kami akan menggunakan folder ini untuk menyimpan semua tata letak bersama.
Buat nama file master.blade.php yang akan memiliki kode berikut yang terkait dengannya -
<html>
<head>
<title>DemoLaravel - @yield('title')</title>
</head>
<body>
@yield('content')
</body>
</html>
Langkah 2
Pada langkah ini, Anda harus memperluas tata letak. Memperluas tata letak melibatkan pendefinisian elemen anak. Laravel menggunakanBlade @extends direktif untuk mendefinisikan elemen anak.
Saat Anda memperluas tata letak, harap perhatikan poin-poin berikut -
Tampilan yang ditentukan dalam Tata Letak Blade menyuntikkan wadah dengan cara yang unik.
Berbagai bagian tampilan dibuat sebagai elemen anak.
Elemen anak disimpan dalam folder tata letak sebagai child.blade.php
Contoh yang menunjukkan perluasan tata letak yang dibuat di atas ditunjukkan di sini -
@extends('layouts.app')
@section('title', 'Page Title')
@section('sidebar')
@parent
<p>This refers to the master sidebar.</p>
@endsection
@section('content')
<p>This is my body content.</p>
@endsection
LANGKAH 3
Untuk mengimplementasikan elemen anak dalam tampilan, Anda harus mendefinisikan tata letak sesuai kebutuhan.
Amati tangkapan layar yang ditampilkan di sini. Anda dapat menemukan bahwa setiap link yang disebutkan di halaman arahan adalah hyperlink. Harap dicatat bahwa Anda juga dapat membuatnya sebagai elemen anak dengan bantuan template blade dengan menggunakan prosedur yang diberikan di atas.
Rute bernama digunakan untuk memberi nama tertentu pada suatu rute. Nama dapat diberikan menggunakan“as” kunci array.
Route::get('user/profile', ['as' => 'profile', function () {
//
}]);
Note - Di sini, kami telah memberi nama profile ke sebuah rute user/profile.
Mengalihkan ke Rute Bernama
Contoh
Perhatikan contoh berikut untuk memahami lebih lanjut tentang Mengalihkan ke rute bernama -
Step 1 - Buat tampilan bernama test.php dan simpan di
resources/views/test.php.
<html>
<body>
<h1>Example of Redirecting to Named Routes</h1>
</body>
</html>
Step 2 - Masuk routes.php, kami telah menyiapkan rute untuk test.phpmengajukan. Kami telah mengganti namanya menjaditesting. Kami juga telah menyiapkan rute lainredirect yang akan mengarahkan permintaan ke rute bernama testing.
app/Http/routes.php
Route::get('/test', ['as'=>'testing',function() {
return view('test2');
}]);
Route::get('redirect',function() {
return redirect()->route('testing');
});
Step 3 - Kunjungi URL berikut untuk menguji contoh rute bernama.
http://localhost:8000/redirect
Step 4 - Setelah mengeksekusi URL di atas, Anda akan diarahkan ke http: // localhost: 8000 / test karena kami mengarahkan ke rute yang disebutkan testing.
Step 5 - Setelah eksekusi URL berhasil, Anda akan menerima output berikut -
Mengalihkan ke Tindakan Pengontrol
Tidak hanya bernama rute tetapi kita juga dapat mengarahkan ke tindakan pengontrol. Kita hanya perlu melewatkan controller dan nama fileactionke metode tindakan seperti yang ditunjukkan pada contoh berikut. Jika Anda ingin meneruskan parameter, Anda dapat meneruskannya sebagai argumen kedua dari metode tindakan.
return redirect()->action(‘NameOfController@methodName’,[parameters]);
Contoh
Step 1 - Jalankan perintah berikut untuk membuat pengontrol yang disebut RedirectController.
php artisan make:controller RedirectController --plain
Step 2 - Setelah eksekusi berhasil, Anda akan menerima output berikut -
Step 3 - Salin kode berikut ke file
app/Http/Controllers/RedirectController.php.
app/Http/Controllers/RedirectController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class RedirectController extends Controller {
public function index() {
echo "Redirecting to controller's action.";
}
}
Step 4 - Tambahkan baris berikut app/Http/routes.php.
app/Http/routes.php
Route::get('rr','RedirectController@index');
Route::get('/redirectcontroller',function() {
return redirect()->action('RedirectController@index');
});
Step 5 - Kunjungi URL berikut untuk menguji contoh.
http://localhost:8000/redirectcontroller
Step 6 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Laravel telah membuat pemrosesan dengan database menjadi sangat mudah. Laravel saat ini mendukung 4 database berikut -
- MySQL
- Postgres
- SQLite
- SQL Server
Kueri ke database dapat diaktifkan menggunakan SQL mentah, pembuat kueri fasih, dan ORM yang Eloquent. Untuk memahami semua operasi CRUD (Buat, Baca, Perbarui, Hapus) dengan Laravel, kami akan menggunakan sistem manajemen siswa yang sederhana.
Menghubungkan ke Database
Konfigurasi database di config/database.php file dan buat database perguruan tinggi dengan struktur di MySQL seperti yang ditunjukkan pada tabel berikut.
Database: College
Table: student
Nama kolom | Jenis Data Kolom | Tambahan |
---|---|---|
Indo | int (11) | Kunci utama | Penambahan otomatis |
Nama | varchar (25) |
Kita akan melihat bagaimana menambah, menghapus, memperbarui dan mengambil catatan dari database menggunakan Laravel di tabel siswa.
Sr.No. | Rekam & Deskripsi |
---|---|
1 | Sisipkan Rekaman Kita dapat memasukkan record menggunakan fasad DB dengan metode insert. |
2 | Ambil Catatan Setelah mengkonfigurasi database, kita dapat mengambil record menggunakan fasad DB dengan metode pilih. |
3 | Perbarui Rekaman Kami dapat memperbarui catatan menggunakan fasad DB dengan metode pembaruan. |
4 | Hapus Rekaman Kita dapat menghapus record menggunakan fasad DB dengan metode delete. |
Bab ini membahas error dan logging di proyek Laravel dan cara mengatasinya.
Kesalahan
Sebuah proyek yang sedang berjalan, ditanggung memiliki beberapa kesalahan. Penanganan kesalahan dan pengecualian telah dikonfigurasi untuk Anda saat Anda memulai proyek Laravel baru. Biasanya, di lingkungan lokal kita perlu melihat kesalahan untuk keperluan debugging. Kami perlu menyembunyikan kesalahan ini dari pengguna di lingkungan produksi. Ini dapat dicapai dengan variabelAPP_DEBUG diatur dalam file lingkungan .env disimpan di root aplikasi.
Untuk lingkungan lokal nilai APP_DEBUG seharusnya true tetapi untuk produksi itu perlu diatur ke false untuk menyembunyikan kesalahan.
Note - Setelah mengubah APP_DEBUG variabel, Anda harus memulai ulang server Laravel.
Logging
Logging adalah mekanisme penting yang digunakan sistem untuk mencatat kesalahan yang dihasilkan. Ini berguna untuk meningkatkan keandalan sistem. Laravel mendukung mode logging yang berbeda seperti mode single, daily, syslog, dan errorlog. Anda dapat mengatur mode iniconfig/app.php mengajukan.
'log' => 'daily'
Anda dapat melihat entri log yang dihasilkan di storage/logs/laravel.log mengajukan.
Laravel menyediakan berbagai tag bawaan untuk menangani formulir HTML dengan mudah dan aman. Semua elemen utama HTML dibuat menggunakan Laravel. Untuk mendukung ini, kita perlu menambahkan paket HTML ke Laravel menggunakan komposer.
Contoh 1
Step 1 - Jalankan perintah berikut untuk melanjutkan dengan yang sama.
composer require illuminate/html
Step 2 - Ini akan menambahkan paket HTML ke Laravel seperti yang ditunjukkan pada gambar berikut.
Step 3 - Sekarang, kita perlu menambahkan paket yang ditunjukkan di atas ke file konfigurasi Laravel yang disimpan di config/app.php.Buka file ini dan Anda akan melihat daftar penyedia layanan Laravel seperti yang ditunjukkan pada gambar berikut. Tambahkan penyedia layanan HTML seperti yang ditunjukkan pada kotak yang diuraikan pada gambar berikut.
Step 4- Tambahkan alias di file yang sama untuk HTML dan Formulir. Perhatikan dua garis yang ditunjukkan pada kotak yang diuraikan pada gambar berikut dan tambahkan dua garis itu.
Step 5- Sekarang semuanya sudah diatur. Mari kita lihat bagaimana kita dapat menggunakan berbagai elemen HTML menggunakan tag Laravel.
Membuka Formulir
{{ Form::open(array('url' => 'foo/bar')) }}
//
{{ Form::close() }}
Menghasilkan Elemen Label
echo Form::label('email', 'E-Mail Address');
Menghasilkan Input Teks
echo Form::text('username');
Menentukan Nilai Default
echo Form::text('email', '[email protected]');
Menghasilkan Input Kata Sandi
echo Form::password('password');
Menghasilkan Input File
echo Form::file('image');
Menghasilkan Kotak Centang atau Input Radio
echo Form::checkbox('name', 'value');
echo Form::radio('name', 'value');
Menghasilkan Kotak Centang Atau Input Radio Yang Dicentang
echo Form::checkbox('name', 'value', true);
echo Form::radio('name', 'value', true);
Menghasilkan Daftar Drop-Down
echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));
Menghasilkan Tombol Kirim
echo Form::submit('Click Me!');
Contoh 2
Step 1 - Salin kode berikut untuk membuat tampilan bernama
resources/views/form.php.
resources/views/form.php
<html>
<body>
<?php
echo Form::open(array('url' => 'foo/bar'));
echo Form::text('username','Username');
echo '<br/>';
echo Form::text('email', '[email protected]');
echo '<br/>';
echo Form::password('password');
echo '<br/>';
echo Form::checkbox('name', 'value');
echo '<br/>';
echo Form::radio('name', 'value');
echo '<br/>';
echo Form::file('image');
echo '<br/>';
echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));
echo '<br/>';
echo Form::submit('Click Me!');
echo Form::close();
?>
</body>
</html>
Step 2 - Tambahkan baris berikut app/Http/routes.php untuk menambahkan rute untuk tampilan form.php
app/Http/routes.php
Route::get('/form',function() {
return view('form');
});
Step 3 - Kunjungi URL berikut untuk melihat formulir.
http://localhost:8000/form
Step 4 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Fitur lokalisasi Laravel mendukung bahasa yang berbeda untuk digunakan dalam aplikasi. Anda perlu menyimpan semua string bahasa yang berbeda dalam sebuah file dan file-file ini disimpan diresources/viewsdirektori. Anda harus membuat direktori terpisah untuk setiap bahasa yang didukung. Semua file bahasa harus mengembalikan array string kunci seperti yang ditunjukkan di bawah ini.
<?php
return [
'welcome' => 'Welcome to the application'
];
Contoh
Step 1 - Buat 3 file untuk bahasa - English, French, dan German. Simpan file bahasa Inggris diresources/lang/en/lang.php
<?php
return [
'msg' => 'Laravel Internationalization example.'
];
?>
Step 2 - Simpan file Prancis di resources/lang/fr/lang.php.
<?php
return [
'msg' => 'Exemple Laravel internationalisation.'
];
?>
Step 3 - Simpan file Jerman di resources/lang/de/lang.php.
<?php
return [
'msg' => 'Laravel Internationalisierung Beispiel.'
];
?>
Step 4 - Buat pengontrol bernama LocalizationController dengan menjalankan perintah berikut.
php artisan make:controller LocalizationController --plain
Step 5 - Setelah eksekusi berhasil, Anda akan menerima output berikut -
Step 6 - Salin kode berikut ke file
app/Http/Controllers/LocalizationController.php
app/Http/Controllers/LocalizationController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class LocalizationController extends Controller {
public function index(Request $request,$locale) {
//set’s application’s locale
app()->setLocale($locale);
//Gets the translated message and displays it
echo trans('lang.msg');
}
}
Step 7 - Tambahkan rute untuk LocalizationController di app/Http/routes.phpmengajukan. Perhatikan bahwa kita meneruskan argumen {locale} setelah pelokalan / yang akan kita gunakan untuk melihat keluaran dalam bahasa yang berbeda.
app/Http/routes.php
Route::get('localization/{locale}','LocalizationController@index');
Step 8- Sekarang, mari kita kunjungi URL yang berbeda untuk melihat semua bahasa yang berbeda. Jalankan URL di bawah ini untuk melihat keluaran dalam bahasa Inggris.
http://localhost:8000/localization/en
Step 9 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Step 10 - Jalankan URL di bawah ini untuk melihat keluaran dalam bahasa Prancis.
http://localhost:8000/localization/fr
Step 11 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Step 12 - Jalankan URL di bawah ini untuk melihat keluaran dalam bahasa Jerman
http://localhost:8000/localization/de
Step 13 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Sesi digunakan untuk menyimpan informasi tentang pengguna di seluruh permintaan. Laravel menyediakan berbagai macam driver sepertifile, cookie, apc, array, Memcached, Redis, dan databaseuntuk menangani data sesi. Secara default, driver file digunakan karena ringan. Sesi dapat dikonfigurasi dalam file yang disimpan diconfig/session.php.
Mengakses Data Sesi
Untuk mengakses data sesi, kita membutuhkan sebuah instance dari sesi yang dapat diakses melalui permintaan HTTP. Setelah mendapatkan instance, kita dapat menggunakan fileget() metode, yang akan membutuhkan satu argumen, “key”, untuk mendapatkan data sesi.
$value = $request->session()->get('key');
Kamu dapat memakai all() metode untuk mendapatkan semua data sesi, bukan get() metode.
Menyimpan Data Sesi
Data dapat disimpan dalam sesi menggunakan put()metode. Ituput() metode akan mengambil dua argumen, itu “key” dan “value”.
$request->session()->put('key', 'value');
Menghapus Data Sesi
Itu forget()metode digunakan untuk menghapus item dari sesi. Metode ini akan memakan waktu“key” sebagai argumennya.
$request->session()->forget('key');
Menggunakan flush() metode alih-alih forget()metode untuk menghapus semua data sesi. Menggunakanpull()metode untuk mengambil data dari sesi dan menghapusnya setelahnya. Metode pull () juga akan mengambilkeysebagai argumennya. Perbedaan antaraforget() dan pull() metode itu forget() metode tidak akan mengembalikan nilai sesi dan pull() metode akan mengembalikannya dan menghapus nilai itu dari sesi.
Contoh
Step 1 - Buat pengontrol bernama SessionController dengan menjalankan perintah berikut.
php artisan make:controller SessionController --plain
Step 2 - Setelah eksekusi berhasil, Anda akan menerima output berikut -
Step 3 - Salin kode berikut dalam file di
app/Http/Controllers/SessionController.php.
app/Http/Controllers/SessionController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class SessionController extends Controller {
public function accessSessionData(Request $request) {
if($request->session()->has('my_name')) echo $request->session()->get('my_name');
else
echo 'No data in the session';
}
public function storeSessionData(Request $request) { $request->session()->put('my_name','Virat Gandhi');
echo "Data has been added to session";
}
public function deleteSessionData(Request $request) { $request->session()->forget('my_name');
echo "Data has been removed from session.";
}
}
Step 4 - Tambahkan baris berikut di app/Http/routes.php mengajukan.
app/Http/routes.php
Route::get('session/get','SessionController@accessSessionData');
Route::get('session/set','SessionController@storeSessionData');
Route::get('session/remove','SessionController@deleteSessionData');
Step 5 - Kunjungi URL berikut ke set data in session.
http://localhost:8000/session/set
Step 6 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Step 7 - Kunjungi URL berikut ke get data from session.
http://localhost:8000/session/get
Step 8 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut.
Step 9 - Kunjungi URL berikut ke remove session data.
http://localhost:8000/session/remove
Step 10 - Anda akan melihat pesan seperti yang ditunjukkan pada gambar berikut.
Validasi adalah aspek terpenting saat mendesain aplikasi. Ini memvalidasi data yang masuk. Secara default, kelas pengontrol dasar menggunakan fileValidatesRequests sifat yang menyediakan metode yang nyaman untuk memvalidasi permintaan HTTP yang masuk dengan berbagai aturan validasi yang kuat.
Aturan Validasi yang Tersedia di Laravel
Laravel akan selalu memeriksa kesalahan dalam data sesi, dan secara otomatis mengikatnya ke tampilan jika tersedia. Jadi, penting untuk diperhatikan bahwa a$errors variabel akan selalu tersedia di semua tampilan Anda pada setiap permintaan, memungkinkan Anda untuk dengan mudah mengasumsikan $errorsvariabel selalu ditentukan dan dapat digunakan dengan aman. Tabel berikut menunjukkan semua aturan validasi yang tersedia di Laravel.
Aturan Validasi yang Tersedia di Laravel | ||
---|---|---|
Diterima | URL Aktif | Setelah (Tanggal) |
Alfa | Alpha Dash | Alpha Numeric |
Himpunan | Sebelum (Tanggal) | Antara |
Boolean | Dikonfirmasi | Tanggal |
Format tanggal | Berbeda | Digit |
Digit Antara | Surel | Ada (Database) |
Gambar (File) | Di | Bilangan bulat |
Alamat IP | JSON | Max |
Jenis MIME (File) | Min | Tidak masuk |
Numerik | Ekspresi Reguler | Yg dibutuhkan |
Wajib Jika | Diperlukan Kecuali | Wajib Dengan |
Wajib Dengan Semua | Diperlukan Tanpa | Diperlukan Tanpa Semua |
Sama | Ukuran | Tali |
Zona waktu | Unik (Database) | URL |
Itu $errors variabel akan menjadi turunan dari Illuminate\Support\MessageBag. Pesan kesalahan dapat ditampilkan dalam file view dengan menambahkan kode seperti yang ditunjukkan di bawah ini.
@if (count($errors) > 0)
<div class = "alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Contoh
Step 1 - Buat pengontrol bernama ValidationController dengan menjalankan perintah berikut.
php artisan make:controller ValidationController --plain
Step 2 - Setelah eksekusi berhasil, Anda akan menerima output berikut -
Step 3 - Salin kode berikut ini
app/Http/Controllers/ValidationController.php mengajukan.
app/Http/Controllers/ValidationController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ValidationController extends Controller {
public function showform() {
return view('login');
}
public function validateform(Request $request) {
print_r($request->all()); $this->validate($request,[
'username'=>'required|max:8',
'password'=>'required'
]);
}
}
Step 4 - Buat file tampilan bernama resources/views/login.blade.php dan salin kode berikut di file itu.
resources/views/login.blade.php
<html>
<head>
<title>Login Form</title>
</head>
<body>
@if (count($errors) > 0)
<div class = "alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<?php
echo Form::open(array('url'=>'/validation'));
?>
<table border = '1'>
<tr>
<td align = 'center' colspan = '2'>Login</td>
</tr>
<tr>
<td>Username</td>
<td><?php echo Form::text('username'); ?></td>
</tr>
<tr>
<td>Password</td>
<td><?php echo Form::password('password'); ?></td>
</tr>
<tr>
<td align = 'center' colspan = '2'
><?php echo Form::submit('Login'); ? ></td>
</tr>
</table>
<?php
echo Form::close();
?>
</body>
</html>
Step 5 - Tambahkan baris berikut app/Http/routes.php.
app/Http/routes.php
Route::get('/validation','ValidationController@showform');
Route::post('/validation','ValidationController@validateform');
Step 6 - Kunjungi URL berikut untuk menguji validasi.
http://localhost:8000/validation
Step 7 - Klik “Login”tombol tanpa memasukkan apa pun di bidang teks. Outputnya akan seperti yang ditunjukkan pada gambar berikut.
Mengupload File di Laravel sangat mudah. Yang perlu kita lakukan adalah membuat file tampilan di mana pengguna dapat memilih file yang akan diunggah dan pengontrol tempat file yang diunggah akan diproses.
Dalam file view, kita perlu menghasilkan input file dengan menambahkan baris kode berikut.
Form::file('file_name');
Di Form :: open (), kita perlu menambahkan ‘files’=>’true’seperti gambar dibawah. Ini memfasilitasi formulir untuk diunggah di banyak bagian.
Form::open(array('url' => '/uploadfile','files'=>'true'));
Contoh
Step 1 - Buat file tampilan bernama resources/views/uploadfile.php dan salin kode berikut di file itu.
resources/views/uploadfile.php
<html>
<body>
<?php
echo Form::open(array('url' => '/uploadfile','files'=>'true'));
echo 'Select the file to upload.';
echo Form::file('image');
echo Form::submit('Upload File');
echo Form::close();
?>
</body>
</html>
Step 2 - Buat pengontrol bernama UploadFileController dengan menjalankan perintah berikut.
php artisan make:controller UploadFileController --plain
Step 3 - Setelah eksekusi berhasil, Anda akan menerima output berikut -
Step 4 - Salin kode berikut ini
app/Http/Controllers/UploadFileController.php mengajukan.
app/Http/Controllers/UploadFileController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class UploadFileController extends Controller {
public function index() {
return view('uploadfile');
}
public function showUploadFile(Request $request) {
$file = $request->file('image');
//Display File Name
echo 'File Name: '.$file->getClientOriginalName(); echo '<br>'; //Display File Extension echo 'File Extension: '.$file->getClientOriginalExtension();
echo '<br>';
//Display File Real Path
echo 'File Real Path: '.$file->getRealPath(); echo '<br>'; //Display File Size echo 'File Size: '.$file->getSize();
echo '<br>';
//Display File Mime Type
echo 'File Mime Type: '.$file->getMimeType(); //Move Uploaded File $destinationPath = 'uploads';
$file->move($destinationPath,$file->getClientOriginalName());
}
}
Step 5 - Tambahkan baris berikut app/Http/routes.php.
app/Http/routes.php
Route::get('/uploadfile','UploadFileController@index');
Route::post('/uploadfile','UploadFileController@showUploadFile');
Step 6 - Kunjungi URL berikut untuk menguji fungsionalitas file unggahan.
http://localhost:8000/uploadfile
Step 7 - Anda akan menerima prompt seperti yang ditunjukkan pada gambar berikut.
Laravel menggunakan pustaka kaya fitur gratis SwiftMaileruntuk mengirim email. Menggunakan fungsi perpustakaan, kita dapat dengan mudah mengirim email tanpa terlalu banyak kerepotan. Template email dimuat dengan cara yang sama seperti tampilan, yang berarti Anda dapat menggunakan sintaks Blade dan memasukkan data ke dalam template Anda.
Tabel berikut menunjukkan sintaks dan atribut send fungsi -
Sintaksis | void send (string | array $ view, array $data, Closure|string $panggilan balik) |
Parameter |
|
Kembali | tidak ada |
Deskripsi | Mengirim email. |
Dalam argumen ketiga, $ callback closure menerima contoh pesan dan dengan contoh itu kita juga dapat memanggil fungsi berikut dan mengubah pesan seperti yang ditunjukkan di bawah ini.
- $ message → subject ('Selamat Datang di Tutorials Point');
- $ message → from ('[email protected] ',' Mr. Example ');
- $ message → to ('[email protected] ',' Mr. Example ');
Beberapa metode yang kurang umum termasuk -
- $ message → sender ('[email protected] ',' Mr. Example ');
- $ message → returnPath ('[email protected] ');
- $ message → cc ('[email protected] ',' Mr. Example ');
- $ message → bcc ('[email protected] ',' Mr. Example ');
- $ message → replyTo ('[email protected] ',' Mr. Example ');
- $ message → prioritas (2);
Untuk melampirkan atau menyematkan file, Anda dapat menggunakan metode berikut -
- $ message → lampirkan ('jalur / ke / attachment.txt');
- $ message → embed ('path / to / attachment.jpg');
Mail dapat dikirim sebagai HTML atau teks. Anda dapat menunjukkan tipe email yang ingin Anda kirim di argumen pertama dengan meneruskan array seperti yang ditunjukkan di bawah ini. Jenis default adalah HTML. Jika Anda ingin mengirim surat teks biasa, gunakan sintaks berikut.
Sintaksis
Mail::send([‘text’=>’text.view’], $data, $callback);
Dalam sintaks ini, argumen pertama mengambil array. Menggunakantext sebagai nama kunci tampilan sebagai nilai kunci.
Contoh
Step 1 - Kami sekarang akan mengirim email dari akun Gmail dan untuk itu Anda perlu mengkonfigurasi akun Gmail Anda di file lingkungan Laravel - .envmengajukan. Aktifkan verifikasi 2 langkah di akun Gmail Anda dan buat sandi khusus aplikasi diikuti dengan mengubah parameter .env seperti yang ditunjukkan di bawah ini.
.env
MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls
Step 2 - Setelah mengubah .env file jalankan dua perintah di bawah ini untuk membersihkan cache dan memulai ulang server Laravel.
php artisan config:cache
Step 3 - Buat pengontrol bernama MailController dengan menjalankan perintah berikut.
php artisan make:controller MailController --plain
Step 4 - Setelah eksekusi berhasil, Anda akan menerima output berikut -
Step 5 - Salin kode berikut ini
app/Http/Controllers/MailController.php mengajukan.
app/Http/Controllers/MailController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class MailController extends Controller {
public function basic_email() {
$data = array('name'=>"Virat Gandhi");
Mail::send(['text'=>'mail'], $data, function($message) {
$message->to('[email protected]', 'Tutorials Point')->subject ('Laravel Basic Testing Mail'); $message->from('[email protected]','Virat Gandhi');
});
echo "Basic Email Sent. Check your inbox.";
}
public function html_email() {
$data = array('name'=>"Virat Gandhi"); Mail::send('mail', $data, function($message) { $message->to('[email protected]', 'Tutorials Point')->subject
('Laravel HTML Testing Mail');
$message->from('[email protected]','Virat Gandhi'); }); echo "HTML Email Sent. Check your inbox."; } public function attachment_email() { $data = array('name'=>"Virat Gandhi");
Mail::send('mail', $data, function($message) {
$message->to('[email protected]', 'Tutorials Point')->subject ('Laravel Testing Mail with Attachment'); $message->attach('C:\laravel-master\laravel\public\uploads\image.png');
$message->attach('C:\laravel-master\laravel\public\uploads\test.txt'); $message->from('[email protected]','Virat Gandhi');
});
echo "Email Sent with attachment. Check your inbox.";
}
}
Step 6 - Salin kode berikut ini resources/views/mail.blade.php mengajukan.
resources/views/mail.blade.php
<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>
Step 7 - Tambahkan baris berikut app/Http/routes.php.
app/Http/routes.php
Route::get('sendbasicemail','MailController@basic_email');
Route::get('sendhtmlemail','MailController@html_email');
Route::get('sendattachmentemail','MailController@attachment_email');
Step 8 - Kunjungi URL berikut untuk menguji email dasar.
http://localhost:8000/sendbasicemail
Step 9- Layar keluaran akan terlihat seperti ini. Periksa kotak masuk Anda untuk melihat keluaran email dasar.
Step 10 - Kunjungi URL berikut untuk menguji email HTML.
http://localhost:8000/sendhtmlemail
Step 11- Layar keluaran akan terlihat seperti ini. Periksa kotak masuk Anda untuk melihat keluaran email html.
Step 12 - Kunjungi URL berikut untuk menguji email HTML dengan lampiran.
http://localhost:8000/sendattachmentemail
Step 13 - Anda dapat melihat output berikut
Note - Di MailController.phpmengajukan alamat email di metode from harus merupakan alamat email yang Anda gunakan untuk mengirim alamat email. Umumnya, ini harus berupa alamat email yang dikonfigurasi di server Anda.
Ajax (Asynchronous JavaScript and XML)adalah sekumpulan teknik pengembangan web yang memanfaatkan banyak teknologi web yang digunakan di sisi klien untuk membuat aplikasi Web asinkron. Impor pustaka jquery di file tampilan Anda untuk menggunakan fungsi ajax dari jquery yang akan digunakan untuk mengirim dan menerima data menggunakan ajax dari server. Di sisi server Anda dapat menggunakan fungsi response () untuk mengirim respons ke klien dan untuk mengirim respons dalam format JSON Anda dapat menghubungkan fungsi respons dengan fungsi json ().
json () sintaks fungsi
json(string|array $data = array(), int $status = 200, array $headers = array(), int $options)
Contoh
Step 1 - Buat file tampilan bernama resources/views/message.php dan salin kode berikut di file itu.
<html>
<head>
<title>Ajax Example</title>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
</script>
<script>
function getMessage() {
$.ajax({
type:'POST',
url:'/getmsg',
data:'_token = <?php echo csrf_token() ?>',
success:function(data) {
$("#msg").html(data.msg);
}
});
}
</script>
</head>
<body>
<div id = 'msg'>This message will be replaced using Ajax.
Click the button to replace the message.</div>
<?php
echo Form::button('Replace Message',['onClick'=>'getMessage()']);
?>
</body>
</html>
Step 2 - Buat pengontrol bernama AjaxController dengan menjalankan perintah berikut.
php artisan make:controller AjaxController --plain
Step 3 - Setelah eksekusi berhasil, Anda akan menerima output berikut -
Step 4 - Salin kode berikut ini
app/Http/Controllers/AjaxController.php mengajukan.
app/Http/Controllers/AjaxController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class AjaxController extends Controller {
public function index() {
$msg = "This is a simple message.";
return response()->json(array('msg'=> $msg), 200);
}
}
Step 5 - Tambahkan baris berikut app/Http/routes.php.
app/Http/routes.php
Route::get('ajax',function() {
return view('message');
});
Route::post('/getmsg','AjaxController@index');
Step 6 - Kunjungi URL berikut untuk menguji fungsionalitas Ajax.
http://localhost:8000/ajax
Step 7 - Anda akan diarahkan ke halaman di mana Anda akan melihat pesan seperti yang ditunjukkan pada gambar berikut.
Step 8 - Outputnya akan muncul seperti yang ditunjukkan pada gambar berikut setelah mengklik tombol.
Sebagian besar aplikasi web memiliki mekanisme khusus untuk penanganan kesalahan. Dengan menggunakan ini, mereka melacak kesalahan dan pengecualian, dan mencatatnya untuk menganalisis kinerja. Pada bab ini, Anda akan membaca tentang penanganan kesalahan pada aplikasi Laravel.
Poin Penting
Sebelum melangkah lebih jauh untuk mempelajari secara detail tentang penanganan kesalahan di Laravel, harap perhatikan poin penting berikut -
Untuk proyek baru apa pun, Laravel mencatat kesalahan dan pengecualian di file App\Exceptions\Handlerkelas, secara default. Mereka kemudian dikirimkan kembali ke pengguna untuk dianalisis.
Saat aplikasi Laravel Anda disetel dalam mode debug, pesan kesalahan mendetail dengan pelacakan tumpukan akan ditampilkan di setiap kesalahan yang terjadi dalam aplikasi web Anda.
Secara default, mode debug disetel ke false dan Anda dapat mengubahnya menjadi true. Ini memungkinkan pengguna untuk melacak semua kesalahan dengan pelacakan tumpukan.
Konfigurasi proyek Laravel mencakup debugopsi yang menentukan seberapa banyak informasi tentang kesalahan yang akan ditampilkan kepada pengguna. Secara default di aplikasi web, opsi disetel ke nilai yang ditentukan dalam variabel lingkungan dari.env mengajukan.
Nilai ditetapkan ke true di lingkungan pengembangan lokal dan diatur ke false dalam lingkungan produksi.
Jika nilainya disetel ke true dalam lingkungan produksi, risiko berbagi informasi sensitif dengan pengguna akhir lebih tinggi.
Catatan eror
Mencatat kesalahan dalam aplikasi web membantu melacaknya dan dalam merencanakan strategi untuk menghapusnya. Informasi log dapat dikonfigurasi di aplikasi web diconfig/app.phpmengajukan. Harap perhatikan poin-poin berikut saat menangani Error Log in Laravel -
Laravel menggunakan pustaka logging PHP monolog.
Parameter logging yang digunakan untuk pelacakan kesalahan adalah single, daily, syslog dan errorlog.
Misalnya, jika Anda ingin mencatat pesan kesalahan di file log, Anda harus menyetel nilai log di konfigurasi aplikasi Anda ke daily seperti yang ditunjukkan pada perintah di bawah ini -
'log' => env('APP_LOG',’daily’),
Jika daily mode log diambil sebagai parameter, Laravel mengambil log kesalahan untuk jangka waktu 5 days, secara default. Jika Anda ingin mengubah jumlah file log maksimum, Anda harus mengatur parameterlog_max_files di file konfigurasi ke nilai yang diinginkan.
‘log_max_files’ => 25;
Tingkat Keparahan
Karena Laravel menggunakan pustaka logging PHP monolog, ada berbagai parameter yang digunakan untuk menganalisis tingkat keparahan. Berbagai tingkat keparahan yang tersediaerror, critical, alert dan emergency messages. Anda dapat mengatur tingkat keparahan seperti yang ditunjukkan pada perintah di bawah ini -
'log_level' => env('APP_LOG_LEVEL', 'error')
Peristiwa menyediakan implementasi pengamat sederhana yang memungkinkan pengguna untuk berlangganan dan mendengarkan berbagai peristiwa yang dipicu dalam aplikasi web. Semua kelas acara di Laravel disimpan diapp/Events folder dan pendengar disimpan di app/Listeners map.
Perintah artisan untuk menghasilkan event dan listener di aplikasi web Anda ditunjukkan di bawah ini -
php artisan event:generate
Perintah ini menghasilkan peristiwa dan pendengar ke folder masing-masing seperti yang dibahas di atas.
Peristiwa dan Pendengar merupakan cara yang bagus untuk memisahkan aplikasi web, karena satu peristiwa dapat memiliki beberapa pendengar yang tidak bergantung satu sama lain. Folder event yang dibuat oleh perintah artisan menyertakan dua file berikut: event.php dan SomeEvent.php. Mereka ditampilkan di sini -
Event.php
<?php
namespace App\Events;
abstract class Event{
//
}
Seperti disebutkan di atas, event.php termasuk definisi dasar kelas Event dan panggilan untuk namespace App\Events. Harap dicatat bahwa acara yang ditentukan pengguna atau kustom dibuat dalam file ini.
SomeEvent.php
<?php
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class SomeEvent extends Event{
use SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct() {
//
}
/**
* Get the channels the event should be broadcast on.
*
* @return array
*/
public function broadcastOn() {
return [];
}
}
Perhatikan bahwa file ini menggunakan serialisasi untuk menyiarkan acara di aplikasi web dan parameter yang diperlukan juga diinisialisasi dalam file ini.
Misalnya, jika kita perlu menginisialisasi variabel order di konstruktor untuk mendaftarkan sebuah event, kita bisa melakukannya dengan cara berikut -
public function __construct(Order $order) {
$this->order = $order;
}
Pendengar
Pendengar menangani semua aktivitas yang disebutkan dalam acara yang didaftarkan. Perintah tukangevent:generate menciptakan semua listeners dalam app/listenersdirektori. Folder Pendengar menyertakan fileEventListener.php yang memiliki semua metode yang diperlukan untuk menangani pendengar.
EventListener.php
<?php
namespace App\Listeners;
use App\Events\SomeEvent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class EventListener{
/**
* Create the event listener.
*
* @return void
*/
public function __construct() {
//
}
/**
* Handle the event.
*
* @param SomeEvent $event * @return void */ public function handle(SomeEvent $event) {
//
}
}
Seperti yang disebutkan dalam kode, itu termasuk handleberfungsi untuk mengelola berbagai acara. Kami dapat membuat berbagai pendengar independen yang menargetkan satu acara.
Fasad memberikan a staticantarmuka ke kelas yang tersedia dalam wadah layanan aplikasi. Laravelfacades berfungsi sebagai static proxies ke kelas yang mendasari dalam penampung layanan, memberikan manfaat sintaks yang singkat dan ekspresif sambil mempertahankan lebih banyak kemampuan pengujian dan fleksibilitas daripada metode statis tradisional.
Cara membuat Fasad
Berikut langkah-langkah membuat Facade di Laravel -
Step 1 - Buat File Kelas PHP.
Step 2 - Ikat kelas tersebut ke Penyedia Layanan.
Step 3 - Daftarkan Penyedia Layanan itu ke
Config \ app.php sebagai penyedia.
Step 4 - Buat Kelas tempat kelas ini diperluas
lluminate \ Support \ Facades \ Facade.
Step 5 - Daftarkan poin 4 ke Config \ app.php sebagai alias.
Referensi Kelas Fasad
Laravel dikirimkan dengan banyak Fasad. Tabel berikut menunjukkan referensi kelas Facade built-in -
Tatapan | Kelas | Service Container Binding |
---|---|---|
Aplikasi | Menerangi \ Foundation \ Aplikasi | aplikasi |
Tukang | Menerangi \ Contracts \ Console \ Kernel | tukang |
Auth | Illuminate \ Auth \ AuthManager | auth |
Auth (Instance) | Illuminate \ Auth \ Guard | |
Pedang | Menerangi \ View \ Compilers \ BladeCompiler | blade.compiler |
Bis | Menerangi \ Contracts \ Bus \ Dispatcher | |
Cache | Nyalakan \ Cache \ Repository | cache |
Config | Menerangi \ Config \ Repository | config |
Kue kering | Menerangi \ Cookie \ CookieJar | Kue kering |
Ruang bawah tanah | Illuminate \ Encryption \ Encrypter | mengenkripsi |
DB | Menerangi \ Database \ DatabaseManager | db |
DB (Instance) | Illuminate \ Database \ Connection | |
Peristiwa | Illuminate \ Events \ Dispatcher | acara |
Mengajukan | Menerangi \ Filesystem \ Filesystem | file |
Gerbang | Menerangi \ Contracts \ Auth \ Access \ Gate | |
Hash | Menerangi \ Kontrak \ Hashing \ Hasher | hash |
Memasukkan | Menerangi \ Http \ Request | permintaan |
Lang | Illuminate \ Translation \ Translator | Penerjemah |
Catatan | Menerangi \ Log \ Writer | catatan |
Surat | Illuminate \ Mail \ Mailer | pengirim |
Kata sandi | Menerangi \ Auth \ Passwords \ PasswordBroker | auth.password |
Antre | Illuminate \ Queue \ QueueManager | antre |
Antrian (Instance) | Menerangi \ Queue \ QueueInterface | |
Antrian (Kelas Dasar) | Illuminate \ Queue \ Queue | |
Alihkan | Menerangi \ Routing \ Redirector | redirect |
Redis | Menerangi \ Redis \ Database | redis |
Permintaan | Menerangi \ Http \ Request | permintaan |
Tanggapan | Menerangi \ Kontrak \ Routing \ ResponseFactory | |
Rute | Nyalakan \ Routing \ Router | router |
Skema | Menerangi \ Database \ Schema \ Blueprint | |
Sidang | Illuminate \ Session \ SessionManager | sidang |
Sesi (Instance) | Illuminate \ Session \ Store | |
Penyimpanan | Menerangi \ Contracts \ Filesystem \ Factory | berkas sistem |
URL | Menerangi \ Routing \ UrlGenerator | url |
Validator | Menerangi \ Validasi \ Pabrik | validator |
Validator (Instance) | Menerangi \ Validation \ Validator | |
Melihat | Menerangi \ View \ Factory | melihat |
Lihat (Instance) | Illuminate \ View \ View |
Contoh
Step 1 - Buat penyedia layanan bernama TestFacadesServiceProvider dengan menjalankan perintah berikut.
php artisan make:provider TestFacadesServiceProvider
Step 2 - Setelah eksekusi berhasil, Anda akan menerima output berikut -
Step 3 - Buat kelas bernama TestFacades.php di App/Test.
App/Test/TestFacades.php
<?php
namespace App\Test;
class TestFacades{
public function testingFacades() {
echo "Testing the Facades in Laravel.";
}
}
?>
Step 4 - Buat kelas Fasad bernama “TestFacades.php” di “App/Test/Facades”.
App/Test/Facades/TestFacades.php
<?php
namespace app\Test\Facades;
use Illuminate\Support\Facades\Facade;
class TestFacades extends Facade {
protected static function getFacadeAccessor() { return 'test'; }
}
Step 5 - Buat kelas Fasad bernama TestFacadesServiceProviders.php di App/Test/Facades.
App/Providers/TestFacadesServiceProviders.php
<?php
namespace App\Providers;
use App;
use Illuminate\Support\ServiceProvider;
class TestFacadesServiceProvider extends ServiceProvider {
public function boot() {
//
}
public function register() {
App::bind('test',function() {
return new \App\Test\TestFacades;
});
}
}
Step 6 - Tambahkan penyedia layanan dalam file config/app.php seperti yang ditunjukkan pada gambar di bawah ini.
config/app.php
Step 7 - Tambahkan alias di file config/app.php seperti yang ditunjukkan pada gambar di bawah ini.
config/app.php
Step 8 - Tambahkan baris berikut app/Http/routes.php.
app/Http/routes.php
Route::get('/facadeex', function() {
return TestFacades::testingFacades();
});
Step 9 - Kunjungi URL berikut untuk menguji Fasad.
http://localhost:8000/facadeex
Step 10 - Setelah mengunjungi URL, Anda akan menerima output berikut -
Kontrak Laravel adalah sekumpulan antarmuka dengan berbagai fungsi dan layanan inti yang disediakan oleh kerangka kerja.
Sebagai contoh, Illuminate\Contracts\Queue\Queue kontrak menggunakan metode yang dibutuhkan untuk mengantri pekerjaan dan Illuminate\Contracts\Mail\Mailer menggunakan metode untuk mengirim email.
Setiap kontrak yang ditentukan mencakup implementasi kerangka kerja yang sesuai. Semua kontrak Laravel tersedia di repositori GitHub seperti yang disebutkan di bawah ini -
https://github.com/illuminate/contracts
Repositori ini menyediakan berbagai kontrak yang tersedia dalam kerangka kerja Laravel yang dapat diunduh dan digunakan sesuai dengannya.
Poin Penting
Saat bekerja dengan kontrak Laravel, harap perhatikan poin penting berikut -
Ini wajib untuk mendefinisikan fasad dalam konstruktor kelas.
Kontrak didefinisikan secara eksplisit di kelas dan Anda tidak perlu menentukan kontrak di konstruktor.
Contoh
Pertimbangkan kontrak yang digunakan untuk Otorisasi di Laravel yang disebutkan di bawah ini -
<?php
namespace Illuminate\Contracts\Auth\Access;
interface Authorizable{
/**
* Determine if the entity has a given ability.
*
* @param string $ability * @param array|mixed $arguments
* @return bool
*/
public function can($ability, $arguments = []);
}
Kontrak tersebut menggunakan fungsi can yang meliputi a parameter bernama ability dan arguments yang menggunakan identifikasi pengguna dalam bentuk file array.
Anda harus menentukan kontrak seperti yang ditunjukkan pada sintaks di bawah ini -
interface <contract-name>
Kontrak digunakan seperti fasad untuk membuat aplikasi Laravel yang kuat dan teruji dengan baik. Ada bermacam-macampractical differences dengan penggunaan kontrak dan fasad.
Kode berikut menunjukkan penggunaan kontrak untuk menyimpan penyimpanan dalam cache -
<?php
namespace App\Orders;
use Illuminate\Contracts\Cache\Repository as Cache;
class Repository{
/**
* The cache instance.
*/
protected $cache; /** * Create a new repository instance. * * @param Cache $cache
* @return void
*/
public function __construct(Cache $cache) { $this->cache = $cache;
}
}
Kontrak tidak berisi implementasi dan ketergantungan baru; mudah untuk menulis implementasi alternatif dari kontrak yang ditentukan, sehingga pengguna dapat mengganti implementasi cache tanpa mengubah basis kode apa pun.
CSRF mengacu pada serangan Cross Site Forgery pada aplikasi web. Serangan CSRF adalah aktivitas tidak sah yang dilakukan oleh pengguna sistem yang diautentikasi. Karena itu, banyak aplikasi web yang rentan terhadap serangan ini.
Laravel menawarkan perlindungan CSRF dengan cara berikut -
Laravel menyertakan plugin CSRF built-in, yang menghasilkan token untuk setiap sesi pengguna aktif. Token ini memverifikasi bahwa operasi atau permintaan dikirim oleh pengguna terotentikasi yang bersangkutan.
Penerapan
Penerapan perlindungan CSRF di Laravel dibahas secara rinci di bagian ini. Poin-poin berikut penting untuk diperhatikan sebelum melanjutkan lebih jauh tentang perlindungan CSRF -
CSRF diimplementasikan dalam bentuk HTML yang dideklarasikan di dalam aplikasi web. Anda harus menyertakan token CSRF tervalidasi yang tersembunyi dalam formulir, sehingga middleware perlindungan CSRF dari Laravel dapat memvalidasi permintaan tersebut. Sintaksnya ditunjukkan di bawah ini -
<form method = "POST" action="/profile">
{{ csrf_field() }}
...
</form>
Anda dapat dengan mudah membangun aplikasi yang digerakkan JavaScript menggunakan pustaka HTTP JavaScript, karena ini termasuk token CSRF untuk setiap permintaan keluar.
File tersebut yaitu resources/assets/js/bootstrap.js mendaftarkan semua token untuk aplikasi Laravel dan termasuk meta tag yang menyimpan csrf-token dengan Axios HTTP library.
Formulir tanpa token CSRF
Perhatikan baris kode berikut. Mereka menunjukkan bentuk yang mengambil dua parameter sebagai masukan:email dan message.
<form>
<label> Email </label>
<input type = "text" name = "email"/>
<br/>
<label> Message </label> <input type="text" name = "message"/>
<input type = ”submit” name = ”submitButton” value = ”submit”>
</form>
Hasil dari kode di atas adalah bentuk yang ditunjukkan di bawah ini yang dapat dilihat oleh pengguna akhir -
Formulir yang ditunjukkan di atas akan menerima informasi masukan apa pun dari pengguna yang berwenang. Ini dapat membuat aplikasi web rentan terhadap berbagai serangan.
Harap diperhatikan bahwa tombol kirim menyertakan fungsionalitas di bagian pengontrol. ItupostContactfungsi digunakan dalam pengontrol untuk tampilan terkait itu. Itu ditunjukkan di bawah ini -
public function postContact(Request $request) {
return $request-> all();
}
Perhatikan bahwa formulir tidak menyertakan token CSRF apa pun sehingga informasi sensitif yang dibagikan sebagai parameter input rentan terhadap berbagai serangan.
Formulir dengan token CSRF
Baris kode berikut menunjukkan kepada Anda formulir yang dirancang ulang menggunakan token CSRF -
<form method = ”post” >
{{ csrf_field() }}
<label> Email </label>
<input type = "text" name = "email"/>
<br/>
<label> Message </label>
<input type = "text" name = "message"/>
<input type = ”submit” name = ”submitButton” value = ”submit”>
</form>
Output yang dicapai akan mengembalikan JSON dengan token seperti yang diberikan di bawah ini -
{
"token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
"name": "TutorialsPoint",
"email": "[email protected]"
}
Ini adalah token CSRF yang dibuat dengan mengklik tombol kirim.
Otentikasi adalah proses mengidentifikasi kredensial pengguna. Dalam aplikasi web, otentikasi dikelola oleh sesi yang mengambil parameter input seperti email atau nama pengguna dan kata sandi, untuk identifikasi pengguna. Jika parameter ini cocok, pengguna dikatakan diautentikasi.
Perintah
Laravel menggunakan perintah berikut untuk membuat formulir dan pengontrol terkait untuk melakukan otentikasi -
php artisan make:auth
Perintah ini membantu dalam membuat perancah otentikasi dengan sukses, seperti yang ditunjukkan pada tangkapan layar berikut -
Kontroler
Kontroler yang digunakan untuk proses otentikasi adalah HomeController.
<?php
namespace App\Http\Controllers;
use App\Http\Requests;
use Illuminate\Http\Request;
class HomeController extends Controller{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct() {
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index() {
return view('home');
}
}
Hasilnya, aplikasi scaffold yang dihasilkan membuat halaman login dan halaman registrasi untuk melakukan otentikasi. Mereka seperti yang ditunjukkan di bawah ini -
Gabung
Registrasi
Mengautentikasi Pengguna Secara Manual
Laravel menggunakan Authfaçade yang membantu dalam mengautentikasi pengguna secara manual. Ini termasukattempt metode untuk memverifikasi email dan sandi mereka.
Pertimbangkan baris kode berikut untuk LoginController yang mencakup semua fungsi untuk otentikasi -
<?php
// Authentication mechanism
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller{
/**
* Handling authentication request
*
* @return Response
*/
public function authenticate() {
if (Auth::attempt(['email' => $email, 'password' => $password])) {
// Authentication passed...
return redirect()->intended('dashboard');
}
}
}
Pada bab sebelumnya, kita telah mempelajari tentang proses otentikasi di Laravel. Bab ini menjelaskan proses otorisasi di Laravel.
Perbedaan antara Otentikasi dan Otorisasi
Sebelum melanjutkan lebih jauh untuk mempelajari tentang proses otorisasi di Laravel, mari kita pahami perbedaan antara otentikasi dan otorisasi.
Di authentication, sistem atau aplikasi web mengidentifikasi penggunanya melalui kredensial yang mereka berikan. Jika ditemukan bahwa kredensial itu valid, mereka diautentikasi, atau tidak.
Di authorization, sistem atau aplikasi web memeriksa apakah pengguna yang diautentikasi dapat mengakses sumber daya yang mereka coba akses atau buat permintaan. Dengan kata lain, ia memeriksa hak dan izin mereka atas sumber daya yang diminta. Jika ditemukan bahwa mereka dapat mengakses sumber daya, itu berarti mereka telah diberi wewenang.
Jadi, authentication melibatkan pemeriksaan validitas kredensial pengguna, dan authorization melibatkan pemeriksaan hak dan izin atas sumber daya yang dimiliki pengguna terotentikasi.
Mekanisme Otorisasi di Laravel
Laravel memberikan mekanisme sederhana untuk otorisasi yang memuat dua cara utama yaitu Gates dan Policies.
Menulis Gates dan Kebijakan
Gerbang digunakan untuk menentukan apakah pengguna berwenang untuk melakukan tindakan tertentu. Mereka biasanya didefinisikan dalamApp/Providers/AuthServiceProvider.phpmenggunakan fasad Gerbang. Gates juga merupakan fungsi yang dideklarasikan untuk menjalankan mekanisme otorisasi.
Kebijakan dideklarasikan dalam larik dan digunakan dalam kelas dan metode yang menggunakan mekanisme otorisasi.
Baris kode berikut menjelaskan kepada Anda bagaimana menggunakan Gates dan Kebijakan untuk mengotorisasi pengguna di aplikasi web Laravel. Perhatikan bahwa dalam contoh ini, fileboot fungsi digunakan untuk memberi otorisasi kepada pengguna.
<?php
namespace App\Providers;
use Illuminate\Contracts\Auth\Access\Gate as GateContract;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [ 'App\Model' => 'App\Policies\ModelPolicy', ]; /** * Register any application authentication / authorization services. * * @param \Illuminate\Contracts\Auth\Access\Gate $gate
* @return void
*/
public function boot(GateContract $gate) { $this->registerPolicies($gate);
//
}
}
Kerangka kerja Laravel menyediakan tiga alat utama untuk interaksi melalui baris perintah yaitu: Artisan, Ticker dan REPL. Bab ini menjelaskan tentang Artisan secara detail.
Pengantar Artisan
Artisan adalah antarmuka baris perintah yang sering digunakan di Laravel dan ini menyertakan sekumpulan perintah yang berguna untuk mengembangkan aplikasi web.
Contoh
Berikut adalah daftar beberapa perintah di Artisan beserta fungsinya masing-masing -
To start Laravel project
php artisan serve
To enable caching mechanism
php artisan route:cache
To view the list of available commands supported by Artisan
php artisan list
To view help about any command and view the available options and arguments
php artisan help serve
Tangkapan layar berikut menunjukkan output dari perintah yang diberikan di atas -
Perintah Menulis
Selain perintah yang terdaftar di Artisan, pengguna juga dapat membuat perintah kustom yang dapat digunakan di aplikasi web. Harap dicatat bahwa perintah disimpan diapp/console/commands directory.
Perintah default untuk membuat perintah yang ditentukan pengguna ditunjukkan di bawah ini -
php artisan make:console <name-of-command>
Setelah Anda mengetik perintah yang diberikan di atas, Anda dapat melihat hasilnya seperti yang ditunjukkan pada gambar di bawah -
File dibuat untuk DefaultCommand dinamai sebagai DefaultCommand.php dan ditunjukkan di bawah -
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class DefaultCommand extends Command{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'command:name';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct() {
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle() {
//
}
}
File ini menyertakan tanda tangan dan deskripsi untuk perintah yang ditentukan pengguna. Fungsi publik bernamahandlemenjalankan fungsionalitas ketika perintah dijalankan. Perintah ini terdaftar di fileKernel.php di direktori yang sama.
Anda juga dapat membuat jadwal tugas untuk perintah yang ditentukan pengguna seperti yang ditunjukkan pada kode berikut -
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel {
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
// Commands\Inspire::class,
Commands\DefaultCommand::class
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) {
// $schedule->command('inspire')
// ->hourly();
}
}
Perhatikan bahwa jadwal tugas untuk perintah yang diberikan ditentukan dalam fungsi bernama schedule, yang menyertakan parameter untuk menjadwalkan tugas yang diambil hourly parameter.
Perintah-perintah tersebut didaftarkan dalam larik perintah, yang mencakup jalur dan nama perintah.
Setelah perintah terdaftar, itu terdaftar di perintah Artisan. Nilai yang termasuk dalam tanda tangan dan bagian deskripsi akan ditampilkan ketika Anda memanggil atribut bantuan dari perintah yang ditentukan.
Mari kita lihat bagaimana melihat atribut dari perintah kita DefaultCommand. Anda harus menggunakan perintah seperti yang ditunjukkan di bawah ini -
php artisan help DefaultCommand
Enkripsi adalah proses mengubah teks biasa menjadi pesan menggunakan beberapa algoritme sehingga pengguna ketiga mana pun tidak dapat membaca informasi. Ini berguna untuk mengirimkan informasi sensitif karena ada lebih sedikit peluang bagi penyusup untuk menargetkan informasi yang ditransfer.
Enkripsi dilakukan menggunakan proses yang disebut Cryptography. Teks yang akan dienkripsi disebut sebagaiPlain Text dan teks atau pesan yang diperoleh setelah enkripsi dipanggil Cipher Text. Proses mengubah teks sandi menjadi teks biasa disebutDecryption.
Laravel menggunakan AES-256 dan AES-128encrypter, yang menggunakan Open SSL untuk enkripsi. Semua nilai yang termasuk dalam Laravel ditandatangani menggunakan protokolMessage Authentication Code sehingga nilai yang mendasarinya tidak dapat diubah setelah dienkripsi.
Konfigurasi
Perintah yang digunakan untuk menghasilkan file key di Laravel ditunjukkan di bawah ini -
php artisan key:generate
Harap dicatat bahwa perintah ini menggunakan generator byte acak aman PHP dan Anda dapat melihat hasilnya seperti yang ditunjukkan pada gambar yang diberikan di bawah ini -
Perintah yang diberikan di atas membantu dalam menghasilkan kunci yang dapat digunakan dalam aplikasi web. Amati tangkapan layar yang ditunjukkan di bawah ini -
Catatan
Nilai enkripsi diselaraskan dengan benar di config/app.php file, yang mencakup dua parameter enkripsi yaitu key dan cipher. Jika nilai yang menggunakan kunci ini tidak disejajarkan dengan benar, semua nilai yang dienkripsi di Laravel akan menjadi tidak aman.
Proses Enkripsi
Enkripsi suatu nilai dapat dilakukan dengan menggunakan encrypt helperdi pengontrol kelas Laravel. Nilai-nilai ini dienkripsi menggunakan cipher OpenSSL dan AES-256. Semua nilai terenkripsi ditandatangani dengan kode Otentikasi Pesan (MAC) untuk memeriksa modifikasi apa pun dari string terenkripsi.
Kode yang ditunjukkan di bawah ini disebutkan dalam pengontrol dan digunakan untuk menyimpan rahasia atau pesan sensitif.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class DemoController extends Controller{
**
* Store a secret message for the user.
*
* @param Request $request
* @param int $id * @return Response */ public function storeSecret(Request $request, $id) { $user = User::findOrFail($id); $user->fill([
'secret' => encrypt($request->secret)
])->save();
}
}
Proses Dekripsi
Dekripsi nilai dilakukan dengan decrypt helper. Perhatikan baris kode berikut -
use Illuminate\Contracts\Encryption\DecryptException;
// Exception for decryption thrown in facade
try {
$decrypted = decrypt($encryptedValue); } catch (DecryptException $e) {
//
}
Harap dicatat bahwa jika proses dekripsi tidak berhasil karena MAC tidak valid yang digunakan, maka pengecualian yang sesuai akan dilemparkan.
Hashing adalah proses mengubah string karakter menjadi nilai tetap yang lebih pendek atau kunci yang mewakili string asli. Laravel menggunakanHash fasad yang menyediakan cara aman untuk menyimpan kata sandi dengan cara hash.
Penggunaan Dasar
Tangkapan layar berikut menunjukkan cara membuat pengontrol bernama passwordController yang digunakan untuk menyimpan dan memperbarui kata sandi -
Baris kode berikut menjelaskan fungsionalitas dan penggunaan file passwordController -
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller
class passwordController extends Controller{
/**
* Updating the password for the user.
*
* @param Request $request * @return Response */ public function update(Request $request) {
// Validate the new password length...
$request->user()->fill([ 'password' => Hash::make($request->newPassword) // Hashing passwords
])->save();
}
}
Sandi yang di-hash disimpan menggunakan makemetode. Metode ini memungkinkan pengelolaan faktor kerjabcrypt algoritma hashing, yang populer digunakan di Laravel.
Verifikasi Kata Sandi terhadap Hash
Anda harus memverifikasi kata sandi terhadap hash untuk memeriksa string yang digunakan untuk konversi. Untuk ini, Anda dapat menggunakancheckmetode. Ini ditunjukkan pada kode yang diberikan di bawah ini -
if (Hash::check('plain-text', $hashedPassword)) {
// The passwords match...
}
Perhatikan bahwa file check metode membandingkan teks biasa dengan hashedPassword variabel dan jika hasilnya benar, itu mengembalikan nilai sebenarnya.
Setiap kerangka aplikasi web memiliki riwayat versinya sendiri dan selalu diperbarui dan dipelihara. Setiap versi terbaru menghadirkan fungsionalitas dan fungsi baru yang berubah atau tidak digunakan lagi, jadi penting bagi Anda untuk mengetahui versi mana yang sesuai untuk proyek Anda.
Untuk Laravel, ada dua versi aktif seperti yang diberikan di bawah ini -
- Laravel 4- dirilis pada Mei 2013
- Laravel 5.1- dirilis pada Februari 2015
Laravel 5.1 juga menyertakan berbagai rilis dengan versi terbaru Laravel 5.1.5 yang mencakup semua fitur tangguh untuk pengembangan web. Peta jalan Laravel atau rilis versi ditunjukkan pada gambar di bawah ini -
Poin-poin berikut ini patut diperhatikan dalam konteks memahami proses rilis Laravel -
Direktori lama app/models dihapus di Laravel 5.1.
Semua pengontrol, middleware, dan permintaan dikelompokkan dalam direktori di bawah folder app / Http.
Folder baru yaitu Providers direktori diganti dengan app/start file di versi Laravel 4.x.
Semua file bahasa dan tampilan dipindahkan ke resources direktori.
Perintah tukang baru route:cache digunakan untuk pendaftaran rute baru dan disertakan dengan rilis Laravel 5.1 dan versi selanjutnya.
Laravel mendukung HTTP middleware dan juga termasuk CSRF tokens dan model otentikasi.
Semua model otentikasi terletak di bawah satu direktori yaitu resources/views/auth. Ini termasuk pendaftaran pengguna, otentikasi dan pengontrol kata sandi.
Rilis Laravel
Versi: kapan | Melepaskan | Perbaikan Bug Sampai | Perbaikan Keamanan Hingga |
---|---|---|---|
V1 | Juni 2011 | - | - |
V2 | September 2011 | - | - |
v3 | Februari 2012 | - | - |
v4 | Mei 2013 | - | - |
5.0 | 4 Februari 2015 | 4 Agustus 2015 | 4 Februari 2016 |
5.1 (LTS) | 9 Juni 2015 | 9 Juni 2017 | 9 Juni 2018 |
5.2 | 21 Desember 2015 | 21 Juni 2016 | 21 Desember 2016 |
5.3 | 23 Agustus 2016 | 23 Feb 2017 | 23 Agustus 2017 |
5.4 | 24 Jan 2017 | 24 Juli 2017 | 24 Jan 2018 |
5.5 (LTS) | 30 Agustus 2017 | 30 Agustus 2019 | 30 Agustus 2020 |
5.6 | 7 Feb 2018 | 7 Agustus 2018 | 7 Feb 2019 |
5.7 | 4 Sep 2018 | 4 Februari 2019 | 4 Sep 2019 |
Perhatikan bahwa versi yang disorot menandai rilis terbaru.
Fitur Gerbang Pengguna Tamu adalah add-on untuk versi 5.7 terbaru yang dirilis pada September 2018. Fitur ini digunakan untuk memulai proses otorisasi bagi pengguna tertentu.
Di Laravel 5.6, ada prosedur yang digunakan untuk mengembalikan falseuntuk pengguna yang tidak berkepentingan. Di Laravel 5.7, kami dapat mengizinkan tamu untuk pergi ke pemeriksaan otorisasi dengan menggunakan spesifiknullable ketik petunjuk dalam pengontrol yang ditentukan seperti yang diberikan di bawah ini -
<?php
Gate::define('view-post', function (?User $user) {
// Guests
});
Penjelasan Kode
Dengan menggunakan file nullableketik petunjuk variabel $ user akan menjadi null ketika pengguna tamu dilewatkan ke gerbang. Anda kemudian dapat membuat keputusan tentang otorisasi tindakan. Jika Anda mengizinkan tipe nullable dan mengembalikan true, maka tamu akan memiliki otorisasi. Jika Anda tidak menggunakan petunjuk tipe nullable, tamu secara otomatis akan mendapatkan respons 403 untuk Laravel 5.7, yang ditampilkan di bawah -
Perbedaan antara kesalahan 403 dan 404 adalah bahwa 404 ditampilkan ketika pengguna mencoba mengakses sumber yang tidak dikenal atau URL dan kesalahan 403 seperti yang disebutkan dalam snapshot di atas ditampilkan jika pengguna yang tidak sah mengakses situs web.
Laravel 5.7 hadir dengan cara baru untuk menangani dan menguji perintah baru. Ini mencakup fitur baru untuk menguji perintah pengrajin dan demonstrasi disebutkan di bawah -
class ArtisanCommandTest extends TestCase{
public function testBasicTest() {
$this->artisan('nova:create', [
'name' => 'My New Admin panel'
])
->expectsQuestion('Please enter your API key', 'apiKeySecret')
->expectsOutput('Authenticating...')
->expectsQuestion('Please select a version', 'v1.0')
->expectsOutput('Installing...')
->expectsQuestion('Do you want to compile the assets?', 'yes')
->expectsOutput('Compiling assets...')
->assertExitCode(0);
}
}
Penjelasan Kode
Di sini kelas baru bernama "ArtisanCommandTest" dibuat di bawah modul kasus uji. Ini mencakup fungsi dasartestBasicTest yang mencakup berbagai fungsi pernyataan.
Perintah tukang expectsQuestionmencakup dua atribut. Satu dengan pertanyaan dan lainnya denganapiKeySecret. Di sini, pengrajin memvalidasi apiKeySecret dan memverifikasi input yang dikirim oleh pengguna.
Skenario yang sama berlaku untuk pertanyaan "Pilih versi" di mana pengguna diharapkan menyebutkan versi tertentu.
Laravel menyertakan fitur pagination yang membantu pengguna atau pengembang untuk menyertakan fitur pagination. Paginator Laravel terintegrasi dengan pembuat kueri dan ORM yang fasih. Metode paginate secara otomatis menangani pengaturan batas yang diperlukan dan offset yang ditentukan. Ini hanya menerima satu parameter untuk paginasi yaitu jumlah item yang akan ditampilkan dalam satu halaman.
Laravel 5.7 menyertakan metode paginasi baru untuk menyesuaikan jumlah halaman di setiap sisi paginator. Metode baru tidak lagi membutuhkan tampilan pagination kustom.
Demonstrasi kode tampilan pagination kustom disebutkan di bawah -
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
class UserController extends Controller{
/**
* Show all of the users for the application.
*
* @return Response
*/
public function index() {
$users = DB::table('users')->paginate(15); return view('user.index', ['users' => $users]);
}
}
Kustomisasi pagination baru sesuai standar Laravel disebutkan di bawah ini -
<?php
User::paginate(10)->onEachSide(5);
Catat itu onEachSide mengacu pada subdivisi dari setiap catatan pagination dengan 10 dan subdivisi 5.
Server dump Laravel hadir dengan versi Laravel 5.7. Versi sebelumnya tidak menyertakan server dump apa pun. Server sampah akan menjadi dependensi pengembangan dalam file pembuat laravel / laravel.
Dengan rilis versi 5.7, Anda akan mendapatkan perintah ini yang menyertakan konsep out-of-thebox yang memungkinkan pengguna untuk membuang data ke konsol atau file HTML alih-alih ke browser. Eksekusi perintah disebutkan di bawah -
php artisan dump-server
# Or send the output to an HTML file
php artisan dump-server --format=html > dump.html
Penjelasan
Perintah menjalankan server di latar belakang yang membantu dalam pengumpulan data yang dikirim dari aplikasi, yang mengirimkan keluaran melalui konsol. Ketika perintah tidak berjalan di latar depan, fungsi dump () diharapkan bekerja secara default.
Laravel 5.7 memperkenalkan fitur baru yang disebut "URL tindakan yang dapat dipanggil". Fitur ini mirip dengan yang ada di Laravel 5.6 yang menerima metode string in action. Tujuan utama dari sintaks baru yang diperkenalkan Laravel 5.7 adalah untuk secara langsung memungkinkan Anda mengakses pengontrol.
Sintaks yang digunakan dalam versi Laravel 5.6 adalah seperti yang ditunjukkan -
<?php
$url = action('UserController@profile', ['id' => 1]);
Tindakan serupa yang disebut di Laravel 5.7 disebutkan di bawah -
<?php
$url = action([PostsController::class, 'index']);
Satu keuntungan dengan format sintaks array yang dapat dipanggil yang baru adalah fitur kemampuan untuk menavigasi ke pengontrol secara langsung jika pengembang menggunakan editor teks atau IDE yang mendukung navigasi kode.