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
  • $ view (string | array) - nama tampilan yang berisi pesan email

  • $ data (array) - array data yang akan dilewatkan untuk dilihat

  • $ callback - Closure callback yang menerima contoh pesan, memungkinkan Anda menyesuaikan penerima, subjek, dan aspek lain dari pesan email

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 -

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.