Selasa, 13 November 2018

Laravel Echo | AMPL

Laravel Echo

 Penyiaran

     pengantar
         Konfigurasi
         Prasyarat Driver
     Gambaran Umum Konsep
         Menggunakan Aplikasi Contoh
     Mendefinisikan Acara Siaran
         Nama Siaran
         Data Siaran
         Antrean Broadcast
         Ketentuan Siaran
     Otorisasi Kanal
         Menentukan Rute Otorisasi
         Menentukan Callback Otorisasi
         Mendefinisikan Kelas Saluran
     Acara Penyiaran
         Hanya Untuk Orang Lain
     Menerima Siaran
         Memasang Laravel Echo
         Mendengarkan Acara
         Meninggalkan Saluran
         Namespaces
     Saluran Hadir
         Mengotorisasi Saluran Keberadaan
         Bergabung dengan Saluran Keberadaan
         Broadcasting To Presence Channels
     Acara Klien
     Notifikasi


 pengantarDalam banyak aplikasi web modern, WebSockets digunakan untuk mengimplementasikan antarmuka pengguna realtime dan live-updating. Ketika beberapa data diperbarui di server, pesan biasanya dikirim melalui koneksi WebSocket untuk ditangani oleh klien. Ini memberikan alternatif yang lebih kuat dan efisien untuk terus melakukan polling terhadap aplikasi Anda untuk perubahan.Untuk membantu Anda dalam membangun jenis aplikasi ini, Laravel mempermudah "menyiarkan" acara Anda melalui sambungan WebSocket. Menyiarkan acara Laravel Anda memungkinkan Anda untuk berbagi nama acara yang sama antara kode sisi server dan aplikasi JavaScript sisi klien Anda.

    
Sebelum terjun ke acara penyiaran, pastikan Anda telah membaca semua dokumentasi mengenai acara dan pendengar Laravel.KonfigurasiSemua konfigurasi penyiaran acara aplikasi Anda disimpan dalam file konfigurasi config / broadcasting.php. Laravel mendukung beberapa driver siaran di luar kotak: Pusher, Redis, dan driver log untuk pengembangan dan debugging lokal. Selain itu, driver null disertakan yang memungkinkan Anda untuk sepenuhnya menonaktifkan penyiaran. Contoh konfigurasi disertakan untuk setiap driver ini dalam file konfigurasi config / broadcasting.php.Penyedia Layanan BroadcastSebelum menyiarkan acara apa pun, Anda harus terlebih dahulu mendaftarkan App \ Providers \ BroadcastServiceProvider. Dalam aplikasi Laravel yang baru, Anda hanya perlu menghapus tanda pada penyedia ini di dalam larik penyedia file konfigurasi config / app.php Anda. Penyedia ini akan memungkinkan Anda untuk mendaftarkan rute otorisasi siaran dan panggilan balik.Token CSRFLaravel Echo akan membutuhkan akses ke token CSRF sesi saat ini. Anda harus memverifikasi bahwa elemen HTML head aplikasi Anda mendefinisikan tag meta yang berisi token CSRF:<meta name = "csrf-token" content = "{{csrf_token ()}}">Prasyarat DriverPusherJika Anda menyiarkan acara Anda melalui Pusher, Anda harus menginstal SDK PHP Pusher menggunakan manajer paket Komposer:komposer membutuhkan pusher / pusher-php-server "~ 3.0"Selanjutnya, Anda harus mengkonfigurasi kredensial Pusher Anda di file konfigurasi config / broadcasting.php. Contoh konfigurasi Pusher sudah disertakan dalam file ini, memungkinkan Anda dengan cepat menentukan kunci, rahasia, dan ID aplikasi Pusher Anda. Konfigurasi pusher konfigurasi config / broadcasting.php juga memungkinkan Anda untuk menentukan opsi tambahan yang didukung oleh Pusher, seperti klaster:'options' => [
    
'klaster' => 'eu',
    
'dienkripsi' => benar],Saat menggunakan Pusher dan Laravel Echo, Anda harus menentukan pusher  sebagai penyiar yang Anda inginkan ketika membuat instance Echo di file sumber daya / js / bootstrap.js Anda:impor Echo dari "laravel-echo"window.Pusher = require ('pusher-js');window.Echo = new Echo ({
    
penyiar: 'pusher',
    
kunci: 'Anda-pusher-key'});RedisJika Anda menggunakan penyiar Redis, Anda harus menginstal pustaka Predis:komposer membutuhkan predis / predisPenyiar Redis akan menyiarkan pesan menggunakan fitur pub / sub Redis; Namun, Anda harus memasangkan ini dengan server WebSocket yang dapat menerima pesan dari Redis dan menyiarkannya ke saluran WebSocket Anda.Ketika penyiar Redis menerbitkan acara, itu akan dipublikasikan pada nama saluran yang ditentukan acara dan payload akan berupa string JSON yang dienkode yang berisi nama peristiwa, payload data, dan pengguna yang menghasilkan ID soket peristiwa (jika berlaku).Socket.IOJika Anda akan memasangkan penyiar Redis dengan server Socket.IO, Anda harus menyertakan perpustakaan klien Socket.IO JavaScript di aplikasi Anda. Anda dapat menginstalnya melalui manajer paket NPM:npm install --save socket.io-clientSelanjutnya, Anda perlu instantiate Echo dengan konektor socket.io dan host.impor Echo dari "laravel-echo"window.io = require ('socket.io-client');window.Echo = new Echo ({
    
penyiar: 'socket.io',
    
host: window.location.hostname + ': 6001'});Akhirnya, Anda perlu menjalankan server Socket.IO yang kompatibel. LARAVEL tidak termasuk implementasi server Socket.IO; namun, server Socket.IO yang dikelola oleh komunitas saat ini dikelola di repositori GitHub tlaverdure / laravel-echo-server.Prasyarat AntreanSebelum acara penyiaran, Anda juga perlu mengonfigurasi dan menjalankan pendengar antrian. Semua acara penyiaran dilakukan melalui antrian pekerjaan sehingga waktu respon dari aplikasi Anda tidak terkena dampak serius.


 Gambaran Umum KonsepAcara siaran Laravel memungkinkan Anda untuk menyiarkan acara Laravel sisi server Anda ke aplikasi JavaScript sisi klien menggunakan pendekatan berbasis driver ke WebSockets. Saat ini, kapal Laravel dengan driver Pusher dan Redis. Peristiwa dapat dengan mudah dikonsumsi di sisi klien menggunakan paket Laravel Echo Javascript.Acara disiarkan melalui "saluran", yang dapat ditetapkan sebagai publik atau pribadi. Setiap pengunjung ke aplikasi Anda dapat berlangganan saluran publik tanpa otentikasi atau otorisasi apa pun; namun, untuk berlangganan saluran pribadi, pengguna harus diautentikasi dan diizinkan untuk mendengarkan saluran tersebut.Menggunakan Aplikasi ContohSebelum menyelam ke setiap komponen penyiaran acara, mari kita lihat ikhtisar tingkat tinggi menggunakan toko e-commerce sebagai contoh. Kami tidak akan membahas detail konfigurasi Pusher atau Laravel Echo karena akan dibahas secara rinci di bagian lain dari dokumentasi ini.Dalam aplikasi kami, mari kita asumsikan kita memiliki halaman yang memungkinkan pengguna untuk melihat status pengiriman untuk pesanan mereka. Mari kita berasumsi bahwa acara ShippingStatusUpdated diaktifkan ketika pembaruan status pengiriman diproses oleh aplikasi:event (ShippingStatus baru ($ update));Antarmuka ShouldBroadcastKetika seorang pengguna melihat salah satu pesanan mereka, kami tidak ingin mereka harus me-refresh halaman untuk melihat pembaruan status. Sebaliknya, kami ingin menyiarkan pembaruan ke aplikasi saat dibuat. Jadi, kita perlu menandai acara ShippingStatusUpdated dengan antarmuka ShouldBroadcast. Ini akan memerintahkan Laravel untuk menyiarkan acara ketika dipecat:<? phpnamespace App \ Events;menggunakan Illuminate \ Broadcasting \ Channel;gunakan Illuminate \ Queue \ SerializesModels;menggunakan Illuminate \ Broadcasting \ PrivateChannel;gunakan Illuminate \ Broadcasting \ PresenceChannel;gunakan Illuminate \ Broadcasting \ InteractsWithSockets;menggunakan Illuminate \ Contracts \ Broadcasting \ ShouldBroadcast;kelas ShippingStatusUpdated mengimplementasikan ShouldBroadcast{
    
/ **
     
* Informasi tentang pembaruan status pengiriman.
     
*
     
* String @var
     
* /
    
pembaruan $ publik;}Antarmuka ShouldBroadcast membutuhkan acara kami untuk menentukan metode broadcastOn. Metode ini bertanggung jawab untuk mengembalikan saluran yang akan disiarkan acara. Stub kosong dari metode ini sudah didefinisikan pada kelas acara yang dihasilkan, jadi kita hanya perlu mengisi detailnya. Kami hanya ingin agar pembuat pesanan dapat melihat pembaruan status, jadi kami akan menyiarkan acara di saluran pribadi yang terikat pada pesanan:/ **
 
* Dapatkan saluran acara harus disiarkan.
 
*
 
* @return array
 
* /siaran fungsi publikOn (){
    
kembalikan PrivateChannel baru ('order.'. $ this-> update-> order_id);}Otorisasi KanalIngat, pengguna harus diizinkan untuk mendengarkan di saluran pribadi. Kami dapat menentukan aturan otorisasi saluran kami di file routes / channels.php. Dalam contoh ini, kita perlu memverifikasi bahwa setiap pengguna mencoba untuk mendengarkan pada saluran private order.1 sebenarnya adalah pembuat pesanan:Broadcast :: channel ('order. {OrderId}', fungsi ($ user, $ orderId) {
    
return $ user-> id === Order :: findOrNew ($ orderId) -> user_id;});Metode saluran menerima dua argumen: nama saluran dan callback yang mengembalikan true atau false yang menunjukkan apakah pengguna berwenang untuk mendengarkan saluran tersebut.Semua callback otorisasi menerima pengguna yang diautentikasi sebagai argumen pertama dan parameter wildcard tambahan sebagai argumen berikutnya. Dalam contoh ini, kami menggunakan placeholder {orderId} untuk menunjukkan bahwa bagian "ID" dari nama saluran adalah wildcard.Mendengarkan Siaran AcaraSelanjutnya, yang tersisa adalah mendengarkan acara di aplikasi JavaScript kami. Kita bisa melakukan ini menggunakan Laravel Echo. Pertama, kami akan menggunakan metode pribadi untuk berlangganan saluran pribadi. Kemudian, kita dapat menggunakan metode mendengarkan untuk mendengarkan acara ShippingStatusUpdated. Secara default, semua properti publik acara akan disertakan pada acara siaran:Echo.private (`order. $ {OrderId}`)
    
.listen ('ShippingStatusUpdated', (e) => {
        
console.log (e.update);
    
});Mendefinisikan Acara SiaranUntuk menginformasikan Laravel bahwa acara tertentu harus disiarkan, terapkan antarmuka Illuminate \ Contracts \ Broadcasting \ ShouldBroadcast di kelas acara. Antarmuka ini sudah diimpor ke semua kelas peristiwa yang dihasilkan oleh kerangka kerja sehingga Anda dapat dengan mudah menambahkannya ke salah satu acara Anda.Antarmuka ShouldBroadcast mengharuskan Anda untuk menerapkan metode tunggal: broadcastOn. Metode broadcastOn harus mengembalikan saluran atau larik saluran yang akan disiarkan acara. Saluran harus berupa saluran, Saluran Pribadi, atau Saluran Keberadaan. Contoh Saluran mewakili saluran publik yang dapat dilanggankan oleh pengguna mana pun, sedangkan Saluran Pribadi dan Saluran Keberadaan mewakili saluran pribadi yang memerlukan otorisasi saluran:<? phpnamespace App \ Events;menggunakan Illuminate \ Broadcasting \ Channel;gunakan Illum


 Acara PenyiaranSetelah Anda mendefinisikan sebuah acara dan menandainya dengan antarmuka ShouldBroadcast, Anda hanya perlu menjalankan event menggunakan fungsi acara. Dispatcher acara akan melihat bahwa acara ditandai dengan antarmuka ShouldBroadcast dan akan mengantri acara untuk penyiaran:event (ShippingStatus baru ($ update));Hanya Untuk Orang LainSaat membuat aplikasi yang menggunakan siaran acara, Anda dapat mengganti fungsi acara dengan fungsi siaran. Seperti fungsi acara, fungsi siaran mengirimkan acara ke pendengar sisi server Anda:disiarkan (ShippingStatus baru ($ update));Namun, fungsi siaran juga mengekspos metode toOthers yang memungkinkan Anda untuk mengecualikan pengguna saat ini dari penerima siaran:disiarkan (baru ShippingStatusUpdated ($ update)) -> toOthers ();Untuk lebih memahami kapan Anda mungkin ingin menggunakan metode toOthers, mari kita bayangkan aplikasi daftar tugas di mana pengguna dapat membuat tugas baru dengan memasukkan nama tugas. Untuk membuat tugas, aplikasi Anda mungkin membuat permintaan ke / tugas titik akhir yang menyiarkan penciptaan tugas dan mengembalikan representasi JSON dari tugas baru. Ketika aplikasi JavaScript Anda menerima respons dari titik akhir, mungkin langsung memasukkan tugas baru ke dalam daftar tugasnya seperti:axios.post ('/ tugas', tugas)
    
.then ((tanggapan) => {
        
this.tasks.push (response.data);
    
});Namun, ingat bahwa kami juga menyiarkan pembuatan tugas. Jika aplikasi JavaScript Anda mendengarkan acara ini untuk menambahkan tugas ke daftar tugas, Anda akan memiliki tugas duplikat dalam daftar Anda: satu dari titik akhir dan satu dari siaran. Anda dapat menyelesaikan ini dengan menggunakan metode toOthers untuk memerintahkan penyiar agar tidak menyiarkan acara ke pengguna saat ini.

    
Acara Anda harus menggunakan sifat Illuminate \ Broadcasting \ InteractsWithSockets untuk memanggil metode toOthers.KonfigurasiKetika Anda menginisialisasi contoh Echo Laravel, ID soket ditetapkan ke koneksi. Jika Anda menggunakan Vue dan Axios, ID soket akan secara otomatis dilampirkan ke setiap permintaan keluar sebagai header X-Socket-ID. Kemudian, ketika Anda memanggil metode toOthers, Laravel akan mengekstrak ID soket dari header dan memerintahkan penyiar untuk tidak menyiarkan ke koneksi apa pun dengan ID soket tersebut.Jika Anda tidak menggunakan Vue dan Axios, Anda perlu secara manual mengkonfigurasi aplikasi JavaScript Anda untuk mengirim header X-Socket-ID. Anda dapat mengambil ID soket menggunakan metode Echo.socketId:var socketId = Echo.socketId ();Menerima SiaranMemasang Laravel EchoLaravel Echo adalah pustaka JavaScript yang membuatnya tidak perlu bersusah payah untuk berlangganan saluran dan mendengarkan acara yang disiarkan Laravel. Anda dapat menginstal Echo melalui manajer paket NPM. Dalam contoh ini, kami juga akan menginstal paket pusher-js karena kami akan menggunakan penyiaran Pusher:npm install --save laravel-echo pusher-jsSetelah Echo diinstal, Anda siap untuk membuat contoh Echo segar di JavaScript aplikasi Anda. Tempat yang bagus untuk melakukan ini adalah di bagian bawah file sumber daya / js / bootstrap.js yang disertakan dengan kerangka Laravel:impor Echo dari "laravel-echo"window.Echo = new Echo ({
    
penyiar: 'pusher',
    
kunci: 'Anda-pusher-key'});Saat membuat contoh Echo yang menggunakan konektor pendorong, Anda juga dapat menentukan kluster serta apakah koneksi harus dienkripsi:window.Echo = new Echo ({
    
penyiar: 'pusher',
    
kunci: 'Anda-pusher-key',
    
klaster: 'eu',
    
terenkripsi: benar});Mendengarkan AcaraSetelah Anda menginstal dan menginisialisasi Echo, Anda siap untuk mulai mendengarkan siaran acara. Pertama, gunakan metode saluran untuk mengambil turunan saluran, lalu panggil metode dengarkan untuk mendengarkan acara tertentu:Echo.channel ('pesanan')
    
.listen ('OrderShipped', (e) => {
        
console.log (e.order.name);
    
});Jika Anda ingin mendengarkan acara di saluran pribadi, gunakan metode pribadi sebagai gantinya. Anda dapat terus melakukan panggilan ke metode mendengarkan untuk mendengarkan beberapa acara pada satu saluran:Echo.private ('pesanan')
    
.mendengarkan(...)
    
.mendengarkan(...)
    
.mendengarkan(...);Meninggalkan SaluranUntuk meninggalkan saluran, Anda dapat memanggil metode cuti pada contoh Echo Anda:Echo.leave ('pesanan');NamespacesAnda mungkin telah memperhatikan pada contoh di atas bahwa kami tidak menentukan namespace lengkap untuk kelas acara. Ini karena Echo akan secara otomatis menganggap peristiwa tersebut terletak di ruang nama App \ Events. Namun, Anda dapat mengkonfigurasi ruang nama root saat Anda membuat instance Echo dengan meneruskan opsi konfigurasi namespace:window.Echo = new Echo ({
    
penyiar: 'pusher',
    
kunci: 'Anda-pusher-key',
    
namespace: 'App.Other.Namespace'});Atau, Anda dapat awalan kelas acara dengan. ketika berlangganan mereka menggunakan Echo. Ini akan memungkinkan Anda untuk selalu menentukan nama kelas yang sepenuhnya memenuhi syarat:Echo.channel ('pesanan')
    
.listen ('. Namespace.Event.Class', (e) => {
        
// //


Sumber :  https://laravel.com/docs/5.7/broadcasting#introduction

Cara Menerapkan Laravel Horizon

Laravel Horizon

    
pengantar
    
Instalasi
        
Konfigurasi
        
Otentikasi Dasbor
    
Menjalankan Horizon
        
Menyebarkan Horizon
    
Tag
    
Notifikasi
    
MetrikpengantarHorizon menyediakan dasbor yang indah dan konfigurasi berbasis kode untuk Laravel Anda yang didukung antrian. Horizon memungkinkan Anda untuk dengan mudah memantau metrik utama sistem antrian Anda seperti throughput pekerjaan, waktu proses, dan kegagalan pekerjaan.Semua konfigurasi pekerja Anda disimpan dalam satu file konfigurasi sederhana, memungkinkan konfigurasi Anda untuk tetap berada di kontrol sumber tempat seluruh tim Anda dapat berkolaborasi.Instalasi


Cara Menerapkan Laravel Horizon
    
Karena penggunaan sinyal proses async, Horizon membutuhkan PHP 7.1+. Kedua, Anda harus memastikan bahwa driver antrian Anda diatur untuk mem-redis dalam file konfigurasi antrian Anda.Anda dapat menggunakan Composer untuk menginstal Horizon ke dalam proyek Laravel Anda:komposer membutuhkan laravel / horizonSetelah menginstal Horizon, publikasikan asetnya menggunakan vendor: publikasikan perintah Artisan:penjual artisan php: publikasikan --provider = "Laravel \ Horizon \ HorizonServiceProvider"KonfigurasiSetelah mempublikasikan aset Horizon, file konfigurasi utamanya akan berlokasi di config / horizon.php. File konfigurasi ini memungkinkan Anda untuk mengonfigurasi opsi pekerja Anda dan setiap opsi konfigurasi menyertakan deskripsi dari tujuannya, jadi pastikan untuk menjelajahi file ini secara menyeluruh.Opsi SaldoHorizon memungkinkan Anda memilih dari tiga strategi penyeimbang: sederhana, otomatis, dan salah. Strategi sederhana, yang merupakan standar, membagi pekerjaan yang masuk secara merata antara proses:'keseimbangan' => 'sederhana',Strategi otomatis menyesuaikan jumlah proses pekerja per antrian berdasarkan beban antrian saat ini. Misalnya, jika antrian notifikasi Anda memiliki 1.000 pekerjaan menunggu sementara antrean render Anda kosong, Horizon akan mengalokasikan lebih banyak pekerja ke antrean notifikasi Anda hingga kosong. Ketika opsi keseimbangan disetel ke false, perilaku Laravel default akan digunakan, yang memproses antrean dalam urutan yang tercantum dalam konfigurasi Anda.Otentikasi DasborHorizon mengekspos dasbor di / horizon. Secara default, Anda hanya akan dapat mengakses dasbor ini di lingkungan lokal. Untuk menentukan kebijakan akses yang lebih spesifik untuk dasbor, Anda harus menggunakan metode Horizon :: auth. Metode auth menerima callback yang harus mengembalikan benar atau salah, menunjukkan apakah pengguna harus memiliki akses ke dasbor Horizon. Biasanya, Anda harus memanggil Horizon :: auth dalam metode boot AppServiceProvider Anda:Horizon :: auth (function ($ request) {
    
// mengembalikan true / false;}); 


Cara Menerapkan Laravel Horizon Menjalankan HorizonSetelah Anda mengkonfigurasikan pekerja Anda dalam file konfigurasi config / horizon.php, Anda dapat memulai Horizon menggunakan perintah Artisan horizon. Perintah tunggal ini akan memulai semua pekerja yang Anda konfigurasi:php artisan horizonAnda dapat menjeda proses Horizon dan memerintahkannya untuk melanjutkan memproses pekerjaan menggunakan cakrawala: jeda dan horizon: lanjutkan perintah Artisan:php artisan horizon: jedaphp artisan horizon: lanjutkanAnda dapat mengakhiri proses master Horizon pada mesin Anda menggunakan cakrawala: mengakhiri perintah Artisan. Pekerjaan apa pun yang sedang diproses Horizon akan diselesaikan dan kemudian Horizon akan keluar:php artisan horizon: hentikanMenyebarkan HorizonJika Anda menerapkan Horizon ke server langsung, Anda harus mengonfigurasi monitor proses untuk memantau perintah horizon php artisan dan memulai ulang jika berhenti tiba-tiba. Saat menerapkan kode baru ke server Anda, Anda perlu menginstruksikan proses master Horizon untuk mengakhiri sehingga dapat dimulai kembali oleh monitor proses Anda dan menerima perubahan kode Anda.Konfigurasi SupervisorJika Anda menggunakan monitor proses Pengawas untuk mengelola proses horizon Anda, file konfigurasi berikut harus cukup:[program: horizon]process_name =% (nama_program) scommand = php /home/forge/app.com/artisan horizonautostart = trueautorestart = truepengguna = menemparedirect_stderr = truestdout_logfile = / home / forge / app.com / horizon.log

    
Jika Anda tidak nyaman mengelola server Anda sendiri, pertimbangkan untuk menggunakan Laravel Forge. Menerapkan ketentuan PHP 7+ server dengan semua yang Anda butuhkan untuk menjalankan aplikasi Laravel yang modern dan canggih dengan Horizon.





TagHorizon memungkinkan Anda untuk menetapkan "tag" ke pekerjaan, termasuk kiriman surat, siaran acara, pemberitahuan, dan pendengar acara yang diantrekan. Bahkan, Horizon akan secara cerdas dan otomatis menandai sebagian besar pekerjaan tergantung pada model Eloquent yang melekat pada pekerjaan. Misalnya, lihat pekerjaan berikut:<? phpnamespace App \ Pekerjaan;gunakan App \ Video;gunakan Illuminate \ Bus \ Queueable;gunakan Illuminate \ Queue \ SerializesModels;gunakan Illuminate \ Queue \ InteractsWithQueue;gunakan Illuminate \ Contracts \ Queue \ ShouldQueue;gunakan Illuminate \ Foundation \ Bus \ Dispatchable;kelas RenderVideo mengimplementasikan ShouldQueue{
    
menggunakan Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    
/ **
     
* Contoh video.
     
*
     
* @var \ App \ Video
     
* /
    
video $ publik;

    
/ **
     
* Buat instance pekerjaan baru.
     
*
     
* @param \ App \ Video $ video
     
* @return batal
     
* /
    
fungsi publik __construct (Video $ video)
    
{
        
$ this-> video = $ video;
    
}

    
/ **
     
* Jalankan pekerjaan.
     
*
     
* @return batal
     
* /
    
menangani fungsi publik ()
    
{
        
// //
    
}}Jika pekerjaan ini diantrekan dengan instance App \ Video yang memiliki id 1, maka secara otomatis akan menerima aplikasi Tag \ Video: 1. Ini karena Horizon akan memeriksa properti pekerjaan untuk setiap model Eloquent. Jika model Eloquent ditemukan, Horizon akan secara cerdas menandai pekerjaan menggunakan nama kelas model dan kunci utama:$ video = App \ Video :: find (1);App \ Jobs \ RenderVideo :: dispatch ($ video);Menandai Secara ManualJika Anda ingin secara manual menentukan tag untuk salah satu objek antrian Anda, Anda dapat menetapkan metode tag di kelas:kelas RenderVideo mengimplementasikan ShouldQueue{
    
/ **
     
* Dapatkan tag yang harus ditugaskan ke pekerjaan.
     
*
     
* @return array
     
* /
    
tag fungsi publik ()
    
{
        
kembali ['render', 'video:'. $ this-> video-> id];
    
}}Notifikasi

    
Catatan: Sebelum menggunakan notifikasi, Anda harus menambahkan paket guzzlehttp / guzzle Composer ke proyek Anda. Saat mengonfigurasi Horizon untuk mengirim pemberitahuan SMS, Anda juga harus meninjau prasyarat untuk driver pemberitahuan Nexmo.Jika Anda ingin diberitahu ketika salah satu antrian Anda memiliki waktu tunggu yang lama, Anda dapat menggunakan metode Horizon :: routeMailNotificationsTo, Horizon :: routeSlackNotificationsTo, dan Horizon :: routeSmsNotificationsTo. Anda dapat memanggil metode ini dari AppServiceProvider aplikasi Anda:Horizon :: routeMailNotificationsTo ('example@example.com ');Horizon :: routeSlackNotificationsTo ('slack-webhook-url', '#channel');Horizon :: routeSmsNotificationsTo ('15556667777');Mengonfigurasi Pemberitahuan Menunggu Batas WaktuAnda dapat mengkonfigurasi berapa detik yang dianggap "menunggu lama" dalam file konfigurasi config / horizon.php Anda. Opsi konfigurasi menunggu dalam file ini memungkinkan Anda mengontrol ambang tunggu panjang untuk setiap kombinasi koneksi / antrian:'menunggu' => [
    
'redis: default' => 60,],MetrikHorizon menyertakan dasbor metrik yang memberikan informasi tentang pekerjaan Anda dan waktu tunggu antrian dan throughput. Untuk mengisi dasbor ini, Anda harus mengonfigurasikan perintah Artisan snapshot Horizon untuk dijalankan setiap lima menit melalui penjadwal aplikasi Anda:/ **
 
* Tentukan jadwal perintah aplikasi.
 
*
 
* @param \ Illuminate \ Console \ Scheduling \ Jadwal $ jadwal
 
* @return batal
 
* /jadwal fungsi terlindungi (Jadwal $ jadwal){
    
$ schedule-> command ('horizon: snapshot') -> everyFiveMinutes ();}




sumber : https://laravel.com/docs/5.7/horizon

Modifikasi Laravel 5.1

Modifikasi Default Login Laravel 5.1

Jika Anda merasa fitur autentikasi bawaan Laravel tidak mencukupi kebutuhan dan berniat membuat autentikasi sendiri, sebaiknya baca dulu artikel ini sampai tuntas. Siapa tahu kebutuhan Anda sebenarnya bisa diakomodir, hanya saja belum tahu caranya.

1. Login Dengan Username

Default login Laravel menggunakan email dan password untuk mengidentifikasi akun. Namun kita bisa dengan mudah mengganti email menjadi username. Caranya seperti di bawah ini:
// 1. tambahkan property $username ke AuthController
class AuthController extends Controller
{
    protected $username = 'username'; // 'username' bisa diganti sesuai kebutuhan
    ...
 
// 2. ganti field email menjadi username di auth/login.blade.php
// sebelum
<input type="email" name="email" value="">
 
// sesudah
<input type="username" name="username" value="">
Sekali lagi, jika Anda belum pernah menggunakan autentikasi bawaan Laravel, baca kembali tutorial Autentikasi Default Laravel 5.1.

2. Mengganti Redirect Setelah Registrasi

Defaultnya setelah berhasil registrasi akan diredirect ke /home. Untuk mengubah url redirect, tambahkan property $redirectPath ke AuthController dan isi sesuai kebutuhan:
class AuthController extends Controller
{
         $redirectPath = 'dashboard/profile';

3. Mengganti Redirect Setelah Login

Jika halaman yang dituju setelah login sama dengan halaman yang dituju setelah registrasi, maka kita tidak perlu melakukan apa-apa. Tapi jika berbeda, misalnya setelah login diredirect ke dashboard/welcome, maka kita harus tambahkan fungsi berikut ini ke AuthController:
public function authenticated($request, $user)
{
         // Fungsi ini akan dipanggil setelah user berhasil login.
         // Kita bisa menambahkan aksi-aksi lainnya, misalnya mencatat waktu last_login user.
         return redirect('dashboard/welcome');
}

4. Menambahkan Pengecekan Status User

Seringkali tabel user memiliki kolom status yang isinya activeblocked atau pending. Lalu hanya user yang statusnya active yang boleh login. Login default Laravel tidak melakukan pengecekan seperti ini. Untuk itu kita harus memodifikasi lagi AuthController dengan menambahkan fungsi seperti ini:
// Fungsi getCredentials ini aslinya ada di Illuminate\Foundation\Auth\AuthenticatesUsers.
// Yang dilakukan disini adalah meng-override fungsi tersebut dan menambahkan kolom status dalam pengecekan.
protected function getCredentials(Request $request)
{
         // aslinya
         // return $request->only($this->loginUsername(), 'password');
  
         // dimodifikasi jadi seperti ini
         return $request->only($this->loginUsername(), 'password') + ['status' => 'active'];
}

5. Otomatis Logout Jika Browser Ditutup

Buka file config/sessions.php, cari baris berikut dan ubah nilainya menjadi true:
'expire_on_close' => false,

Penutup

Sekian 5 modifikasi autentikasi bawaan Laravel versi On The Spot. Trik-trik seperti ini tidak ditemui dalam dokumentasi resmi di website laravel.com. Hanya Tuhan, Taylor Otwell, dan Anda yang suka menelusuri source code yang tahu. Keep reading !

Belajar Laravel

Cara Membuat Halaman Web Pertama Menggunakan Laravel 5


Bagi para developer web mungkin sudah mengetahui cukup banyak framework PHP yang ada saat ini seperti CodeIgniter yang ringan dan mudah dipelajari hingga Zend Framework yang lebih kompleks dan enterprise. Nah, selain framework PHP tersebut, ada satu framework lain yang menarik untuk disimak yaitu Laravel.
Laravel dibangun oleh Taylor Otwell pada tanggal 22 Pebruari 2012 lalu. Framework ini merupakan framework PHP open source dengan desain MVC (Model-View-Controller) yang digunakan untuk membangun sebuah aplikasi situs web.
Di artikel ini saya akan menjelaskan sedikit tentang Laravel, dari mulai cara menginstal Laravel sampai membuat halaman pertama menggunakan framework ini. Alasan mengapa saya menulis artikel tentang Laravel, selain lagi ramai dikalangan developer web, Laravel juga merupakan framework PHP yang membuat kodingan menjadi lebih singkat, mudah dimengerti, dan ekspressif sehingga hanya dengan membaca sekilas dari kode yang ditulis kita sudah bisa menduga apa maksudnya tanpa perlu melihat dokumentasi.
Sebelum mulai menginstal framework Laravel, pastikan di komputer anda sudah terinstal aplikasi semacam WampServer atau SecureWamp. Pada komputer saya untuk artikel ini menggunakan sistem operasi Windows 10 dan aplikasi XAMPP.
Ada beberapa cara sebetulnya untuk menginstal Laravel, namun pada tulisan ini kita akan menginstal Laravel menggunakan metode Composer yaitu dengan menggunakan perintah composer create-project. Metode ini sangat direkomendasikan karena Composer akan mengurus segala ketergantungan Laravel dengan library lainnya. Dengan kata lain, kita tidak perlu mengunduh satu persatu library yang dibutuhkan.

Instal Composer

Bagi pengguna Windows bisa langsung mengunduh Composer Installer. Buka aplikasi yang sudah diunduh kemudian lakukan proses instalasi sampai selesai. Pada proses instalasi Composer akan muncul tampilan yang meminta letak dimana lokasi PHP diinstal, karena pada tulisan ini menggunakan aplikasi XAMPP maka lokasi PHP ada pada C:/xampp/php/php.exe. Jika anda tidak menggunakan XAMPP, silahkan cari lokasi PHP yang ada pada komputer anda.

Instal Laravel

Setelah selesai menginstal Composer, selanjutnya kita akan menginstal Laravel dengan menggunakan perintah composer create-project pada Command Prompt (CMD) yang terdapat pada sistem operasi Windows. Karena pada tulisan ini menggunakan XAMPP, maka kita akan menginstal Laravel pada folder C:/xampp/htdocs/ .
Silahkan buka CMD dan arahkan lokasi instalasi pada folder htdocs. Ikuti perintah seperti di bawah ini untuk menginstal Laravel dan membuat proyek baru.
composer create-project laravel/laravel project-name –prefer-dist
project-name merupakan nama dari sebuah proyek yang kita buat, silahkan isi nama sesuai dengan keinginan. Pada kasus ini saya beri nama proyek belajarlaravel. Setelah itu kita hanya perlu menunggu Laravel terpasang pada komputer kita dengan nama proyek yang sudah dibuat. Harus diingat, proses ini membutuhkan koneksi internet.

Setelah proses pemasangan Laravel selesai, silahkan ketik URL localhost/belajarlaravel/public untuk melihat hasilnya. Sebelumnya, terlebih dahulu anda harus membuka aplikasi XAMPP dan mengaktifkan web server Apache. Di bawah ini tampilan pertama ketika kita berhasil menginstal Laravel.

Menampilkan Halaman “Hello, Agan!”

Setelah berhasil menginstal atau membuat proyek Laravel, sekarang kita akan mencoba membuat halaman web menggunakan Laravel. Pada bahasa pemrograman apapun ketika belajar pertama kali kita akan belajar menampilkan kalimat “Hello, World”.
Pada tulisan ini, agar sedikit berbeda dan agar tidak mainstream maka kita akan menggunakan kalimat “Hello, Agan!”. Halaman yang akan dibuat akan tampak seperti gambar dibawah ini.

 
Untuk membuat halaman seperti diatas, silahkan buka proyek belajrlaravel menggunakan editor teks seperti Sublime, Notepad++, dan lain-lain. Laravel mempunyai konsep MVC (Model-View-Controller). Untuk membuat tampilan kita akan buat pada view, untuk mengenai data kita akan simpan pada model, dan untuk logika nya kita akan simpan pada controller.
Pertama kita akan membuat tampilan, silahkan buat file dengan nama hello.blade.php dan ketik koding seperti dibawah ini.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<html>
    <head>
        <title>Belajar Laravel</title>
//menggunakan font dari Google API
        <link href="//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">
//{name} merupakan variable yang berisi nama
                <div class="title">Hello {{$name}}, Selamat Belajar Laravel :)</div>
            </div>
        </div>
    </body>
</html>
Kemudian simpan pada belajarlaravel/resources/views/hello.blade.php. Jika anda belum mengetahui, blade merupakan template engine bawaan Laravel. Blade menawarkan sintaks yang lebih mudah dan singkat untuk dipakai dalam menghasilkan dokumen HTML.



Setelah itu, buatlah controller baru dengan nama Hello. Ketik kodingan di bawah ini untuk membuat fungsi baru dengan nama show pada controller Hello.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

class Hello extends BaseController
{
    public function show($name) {
     return view('hello', array('name' =>$name));
    }
}



Setelah selesai tahap diatas, silahkan buka file routes.php yang terdapat pada proyek belajarlaravel/app/Http/routes.php kemudian tambahkan koding di bawah ini.
1
Route::get('/hello/{name}', 'Hello@show');
Untuk melihat hasilnya silahkan ketik URL localhost/belajarlaravel/public/hello/{name} pada peramban web. Jika anda ingin menampilkan nama anda, silahkan isi variabel {name} dengan nama anda.
Nah, cukup mudah kan membuat proyek web menggunakan Laravel. Silahkan bagi para developer yang tertarik dan ingin belajar mengenai Laravel bisa lebih mengekplor mengenai framework yang satu ini.


Tutorial CRUD pada Laravel 5.5 (Lengkap) 

Halo sobat koder! Masih ngoding kan? https://pic.sopili.net/pub/emoji/twitter/2/72x72/1f60e.png
Pada artikel kali ini, saya akan memberikan tutorial melakukan CRUD (Create, Read, Update dan Delete) pada Laravel. Sebelumnya saya pernah memberikan tutorial CRUD laravel untuk versi 5.3. Nah, pada kesempatan kali ini, saya akan mencoba mengupdatenya dengan versi yang terbaru yaitu laravel 5.5.
Oke gak perlu basa basi lagi, mari kita mulai saja project membuat CRUD di laravel 5.5. https://pic.sopili.net/pub/emoji/twitter/2/72x72/1f44c.png

Install Laravel

Sebelum memulai melakukan CRUD di Laravel, tentunya kita harus install laravel dong. Tapi buat kalian yang sudah punya projectnya bisa skip tahap ini.
Sebelumnya saya telah membuatkan tutorial juga mengenai cara installnya, jadi untuk kalian yang belum pernah melakukan instalasi laravel, bisa langsung ke tutorial cara install laravel.
Jika kalian menggunakan linux atau macOS, silahkan lakukan konfigurasi permissions pada beberapa direktori laravel. Namun, jika kalian menggunakan windows bisa melewati bagian ini.
sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache
Pada tahap ini, seharusnya jika kalian menjalankan perintah php artisan serve pada terminal maka akan muncul tampilan berikut pada browser.

 

Konfigurasi Database di Laravel

Setelah melakukan instalasi, tahap selanjutnya adalah melakukan konfigurasi database untuk digunakan laravel. Kalian cukup membuat database baru, dalam hal ini saya akan menggunakan database bernama kodehero_crud. Kalian bisa menamai database dengan nama apapun. Selanjutnya, buka file .env pada direktori root laravel, dan lakukan konfigurasi seperti berikut.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=kodehero_crud // Ganti dengan nama database kalian
DB_USERNAME=root          // Ganti dengan username database kalian
DB_PASSWORD=              // Ganti dengan password user database kalian

Membuat Model dan Migrations

Langkah selanjutnya adalah membuat model dan migrations. Sebelumnya saya pernah membuatkan tutorial mengenai pembuatan migrations menggunakan php artisan. Tetapi prosesnya masih membuat model dan migrations satu persatu. Kali ini akan saya ajarkan bagaimana membuat model dan migrations-nya dalam sekali perintah php artisan. Silahkan buka terminal yang kalian biasa gunakan dan panggil perintah berikut.
php artisan make:model Article -m
Pada perintah diatas, kita membuat model dengan nama Article. Kemudian, dengan menambahkan perintah -m dibelakangnya, maka laravel akan secara otomatis membuatkan migration-nya sekaligus. Praktis kan. https://pic.sopili.net/pub/emoji/twitter/2/72x72/1f44c.png

Konfigurasi file migrations

Setelah berhasil membuat file migrations dengan perintah diatas. Sekarang saatnya mengisi kodingnya. buka file migrations yang telah dibuat tadi pada direktori database\migrations\xxxx_xx_xx_xxxxxx_create_articles_table.php. Pada method up, tambahkan beberapa koding berikut.
public function up()
{
    Schema::create('articles', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->text('content');
        $table->timestamps();
        $table->softDeletes();
    });
}
Pada kode diatas, saya hanya menggunakan 2 atribut saja untuk tabel articles supaya sederhana. Selain itu saya juga menggunakan softDeletes(), supaya nantinya operasi hapus data di tabel kita menggunakan prosedur soft delete bukan permanen delete.
Soft Delete merupakan metode yang sangat disarankan saat kalian melakukan operasi hapus data pada database, sehingga data tidak benar-benar hilang. Hal ini untuk mengantisipasi jika data yang kita hapus masih memiliki relasi dengan data di tabel lain yang tentunya akan mengakibatkan error saat data tersebut dihapus secara permanen.
Jika sudah, silahkan lakukan migrasi dengan perintah berikut.
php artisan migrate
Jika terdapat error specified key was too long, saya sudah menyiapkan tutorial untuk mengatasinya. silahkan baca solusi laravel error specified key was too long.

Konfigurasi file model Article

Setalah melakukan konfigurasi pada file migrations, sekarang saatnya kita melakukan konfigurasi di bagian modelnya. Silahkan buka file modelnya, biasanya terdapat pada direktori app\Article.php. Pada file model ini, saya hanya akan menambahkan beberapa atribut saja.
<?php
 
namespace App;
 
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
 
class Article extends Model
{
    // Digunakan untuk menggunakan soft delete secara default saat menghapus data
    use SoftDeletes;
 
    protected $fillable = [
        'title', 'content'
    ];
    protected $dates = ['deleted_at'];
}
Oke, cukup ini saja yang perlu kita lakukan pada modelnya. Selanjutnya adalah mengatur routingnya.

Konfigurasi Route di Laravel

Buka file route yang ada di direktori routes\web.php. Tambahkan baris kode berikut.
Route::resource('article', 'ArticleController');
Pada route diatas, saya menggunakan resource, sehingga kita tidak perlu lagi membuat route untuk CRUD satu persatu, Semua otomatis disediakan oleh laravel. 

Membuat Controller Resource untuk CRUD

Untuk membuat controller, cukup dengan menggunakan perintah php artisan saja. Tapi karena kita menggunakan route resource, maka kita akan membuat controller dengan resource juga. Lakukan perintah berikut pada terminal.
php artisan make:controller ArticleController -r
Perhatikan tambahan -r pada perintah diatas. Fungsinya adalah untuk membuat controller dengan tambahan fungsi untuk CRUD secara otomatis. Jika kalian buka file controller yang telah dibuat pada direktori app\Http\Controllers\ArticleController.php, maka kalian akan menemukan method index()create()store()show()edit()update() dan destroy(). Fungsi inilah yang akan kita gunakan untuk membuat CRUD. Oke, silahkan masukan koding berikut untuk membuat CRUD-nya.
<?php
 
namespace App\Http\Controllers;
 
use App\Article;
use Illuminate\Http\Request;
 
class ArticleController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $articles = Article::orderBy('id', 'DESC')->paginate(5);
        return view('article.index', compact('articles'));
    }
 
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('article.create');
    }
 
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request, [
            'title' => 'required',
            'content' => 'required'
        ]);
 
        $article = Article::create($request->all());
 
        return redirect()->route('article.index')->with('message', 'Artikel berhasil dibuat!');
    }
 
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $article = Article::findOrFail($id);
        return view('article.show', compact('article'));
    }
 
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $article = Article::findOrFail($id);
        return view('article.edit', compact('article'));
    }
 
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $this->validate($request, [
            'title' => 'required',
            'content' => 'required'
        ]);
 
        $article = Article::findOrFail($id)->update($request->all());
 
        return redirect()->route('article.index')->with('message', 'Artikel berhasil diubah!');
    }
 
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $article = Article::findOrFail($id)->delete();
        return redirect()->route('article.index')->with('message', 'Artikel berhasil dihapus!');
    }
}
Kodingan diatas, dibuat sesederhana mungkin supaya mudah dipahami. Dalam kasus yang sesungguhnya, mungkin akan lebih rumit lagi prosesnya. Tapi karena ini hanya contoh CRUD yang sederhana, maka saya buat sesimpel mungkin.

Membuat View untuk CRUD di Laravel

Langkah berikutnya adalah membuat view. Karena pada bagian ini banyak file yang perlu dibuat secara terpisah, maka saya akan bagi menjadi beberapa sub bab.

Membuat layouts di laravel

Untuk membuat layouts, caranya cukup mudah. Silahkan buat folder baru pada direktori resources\views\. Kemudian buat file baru pada folder layouts yang telah kita buat. Pada tutorial ini saya menggunakan nama app.blde.php untuk file layoutnya. Jadi buat file baru pada direktori resources\views\layouts\app.blade.php. Supaya sederhana, saya akan menggunakan html biasa dengan sentuhan bootstrap.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
    <title>Kodehero - CRUD</title>
    <style>
        .martop-sm {margin-top: 15px;}
        .martop-lg {margin-top: 70px;}
    </style>
</head>
<body>
    <div class="container martop-lg">
        <div class="panel panel-default">
            <div class="panel-body">@yield('content')</div>
        </div>
    </div>
    
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</body>
</html>

Membuat View untuk Index 

Index disini, dimaksudkan untuk proses Read pada rangkaian CRUD. Jadi pada view ini, nantinya semua data akan ditampilkan disini. Buat file baru resources\views\article\index.blade.php.
@extends('layouts.app')
 
@section('content')
    <a href="{{ route('article.create') }}" class="btn btn-info btn-sm">Artikel Baru</a>
    
    @if ($message = Session::get('message'))
        <div class="alert alert-success martop-sm">
            <p>{{ $message }}</p>
        </div>
    @endif
 
    <table class="table table-responsive martop-sm">
        <thead>
            <th>ID</th>
            <th>Title</th>
            <th>Action</th>
        </thead>
        <tbody>
            @foreach ($articles as $article)
                <tr>
                    <td>{{ $article->id }}</td>
                    <td><a href="{{ route('article.show', $article->id) }}">{{ $article->title }}</a></td>
                    <td>
                        <form action="{{ route('article.destroy', $article->id) }}" method="post">
                            {{csrf_field()}}
                            {{ method_field('DELETE') }}
                            <a href="{{ route('article.edit', $article->id) }}" class="btn btn-warning btn-sm">Ubah</a>
                            <button type="submit" class="btn btn-danger btn-sm">Hapus</button>
                        </form>
                    </td>
                </tr>
            @endforeach
        </tbody>
    </table>
@endsection
Perlu diperhatikan disini, bahwa untuk penghapusan data sebaiknya kita menggunakan method post, bukan menggunakan link yang mengarah ke route destroy. Selain itu, karena kita menggunakan route resource, maka otomatis laravel meminta kita untuk mengirim data melalui HTTP REST, tetapi karena pada dasarnya HTML Form tidak support hal tersebut, kita harus menggunakan method spoofing. Dalam hal ini, saya menggunakan {{ method_field('DELETE') }} untuk mensimulasikan method DELETE

Membuat View untuk Create

Untuk Create, tentunya kita akan membuat sebuah form. Buat file baru pada direktori resources\views\article\create.blade.php. Silahkan lihat contohnya dibawah.
@extends('layouts.app')
 
@section('content')
<h4>Artikel Baru</h4>
<form action="{{ route('article.store') }}" method="post">
    {{csrf_field()}}
    <div class="form-group {{ $errors->has('title') ? 'has-error' : '' }}">
        <label for="title" class="control-label">Title</label>
        <input type="text" class="form-control" name="title" placeholder="Title">
        @if ($errors->has('title'))
            <span class="help-block">{{ $errors->first('title') }}</span>
        @endif
    </div>
    <div class="form-group {{ $errors->has('content') ? 'has-error' : '' }}">
        <label for="content" class="control-label">Content</label>
        <textarea name="content" cols="30" rows="5" class="form-control"></textarea>
        @if ($errors->has('content'))
            <span class="help-block">{{ $errors->first('content') }}</span>
        @endif
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-info">Simpan</button>
        <a href="{{ route('article.index') }}" class="btn btn-default">Kembali</a>
    </div>
</form>
@endsection

Membuat View untuk Show

Untuk Show, kita hanya perlu menampilkan data salah satu artikel saja. Buat file baru pada direktori resources\views\article\show.blade.php dan gunakan contoh kode dibawah.
@extends('layouts.app')
 
@section('content')
<h4>{{ $article->title }}</h4>
<p>{{ $article->content }}</p>
<a href="{{ route('article.index') }}" class="btn btn-default">Kembali</a>
@endsection

Membuat View untuk Edit

Untuk edit kurang lebih mirip dengan saat membuat view untuk Create. Bedanya, disini, kita harus menampilkan data yang akan di edit pada form. Buat file baru pada direktori resources\views\article\edit.blade.php dan gunakan contoh kode dibawah.
@extends('layouts.app')
 
@section('content')
<h4>Ubah Artikel</h4>
<form action="{{ route('article.update', $article->id) }}" method="post">
    {{csrf_field()}}
    {{ method_field('PUT') }}
    <div class="form-group {{ $errors->has('title') ? 'has-error' : '' }}">
        <label for="title" class="control-label">Title</label>
        <input type="text" class="form-control" name="title" placeholder="Title" value="{{ $article->title }}">
        @if ($errors->has('title'))
            <span class="help-block">{{ $errors->first('title') }}</span>
        @endif
    </div>
    <div class="form-group {{ $errors->has('content') ? 'has-error' : '' }}">
        <label for="content" class="control-label">Content</label>
        <textarea name="content" cols="30" rows="5" class="form-control">{{ $article->content }}</textarea>
        @if ($errors->has('content'))
            <span class="help-block">{{ $errors->first('content') }}</span>
        @endif
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-info">Simpan</button>
        <a href="{{ route('article.index') }}" class="btn btn-default">Kembali</a>
    </div>
</form>
@endsection
Sama seperti DELETE diatas, kita harus menggunakan method spoofing untuk menggunakan PUT pada proses update. Dalam hal ini, saya menggunakan {{ method_field('PUT') }} untuk mensimulasikan method PUT.

Percobaan Aplikasi

Setalah bersusah payah diatas, sekarang saatnya kita mencoba aplikasi kita. https://pic.sopili.net/pub/emoji/twitter/2/72x72/1f602.png
Kita jalankan dulu servernya dengan perintah php artisan serve. Selanjutnya buka browser dan arahkan ke URL localhost:8000/article. Jika berhasil maka akan muncul tampilan seperti dibawah.
Kemudian, jika kita klik tombol Artikel Baru, maka akan diarahkan ke view Create. Jika berhasil maka tampilannya akan seperti ini.

Silahkan coba untuk membuat artikel baru, jika ada kesalahan input data, maka aplikasi akan kembali ke halaman tersebut dan menampilkan pesan error. Namun, jika berhasil maka aplikasi akan kembali ke halaman index dengan pesan sukses.
Selanjutnya adalah percobaan untuk melihat data satuan. Caranya, klik saja link yang ada pada judul artikel. Maka akan terlihat tampilan artikel secara utuh.
 

Berikutnya, adalah percobaan ubah data. Jika kalian tekan tombol Ubah, maka aplikasi akan menuju view edit dengan tampilan sebagai berikut.
 

Sama seperti create, ketika tombol Simpan ditekan maka aplikasi akan mengecek input dari user, jika tidak ada kesalahan maka aplikasi akan kembali ke halaman index dan menampilkan pesan sukses.
Yang terakhir adalah proses delete. Jika tombol Hapus ditekan, maka data akan dihapus. Namun, hapus disini tidak secara permanen, melainkan hanya sementara menggunakan metode soft delete. Sehingga jika data ini nantinya punya relasi dengan data lain, tidak akan terjadi error jika dihapus.



Tutorial CRUD pada Laravel 5.5

Tutorial CRUD pada Laravel 5.5 (Lengkap) December 19, 2017 laravel , php , tutorial , web , web series Halo sobat kode...