Ikhwan Saputera

Setiap Waktu adalah Belajar, Setiap Tempat adalah Sekolah, Setiap Orang adalah Guru

Showing posts with label Laravel. Show all posts
Showing posts with label Laravel. Show all posts

Monday, April 12, 2021

Laravel 8 Jetstream Livewire CRUD (contoh)

Hai Para Developer,

Kali ini, saya akan menunjukkan kepada Anda livewire crud dengan jetstream di aplikasi laravel 8. Kita akan mempelajari contoh aplikasi laravel 8 jetstream livewire yang masih fress. Saya ingin berbagi dengan Anda bagaimana cara melakukan live-opeartion live dengan jetstream di aplikasi laravel 8.

Artikel ini akan memberi Anda contoh yang mudah dan sederhana dari contoh aplikasi laravel 8 jetstream livewire. Dalam contoh ini saya akan menunjukkan tahapan demi tahapan aplikasi laravel 8 livewire crud dengan modal tailwind css.

Laravel 8 jetstream dirancang oleh Tailwind CSS dan mereka menyediakan auth menggunakan livewire dan Inertia. saya akan menunjukkan cara membuat modul dengan livewire di auth jetstream default di laravel 8.

Di sini saya akan memberi Anda contoh lengkap untuk contoh aplikasi laravel 8 jetstream livewire. Jadi mari kita ikuti langkah demi langkah berikut:

 

Step 1 : Install Laravel 8 App

Pada langkah pertama, kita perlu mendapatkan aplikasi versi laravel baru menggunakan perintah di bawah ini. Jadi mari kita buka terminal dan jalankan perintah di bawah ini.

composer create-project --prefer-dist laravel/laravel blog

Step 2 : Create Jetstream Auth with Livewire:

Anda dapat mengikuti perintah di bawah ini yang diketikan pada terminak seperti bawah ini:

composer require laravel/jetstream

Berikutnya kita membuat authentifikasi dengan perintah yang mana ini merupakan dasar untuk login, register dan email verification, dan anda juga dapat menambahkan opsi kolaborasi dengan menambahkan parameter team. Berikut perintahnya :

php artisan jetstream:install livewire

Dan kemudian kita sertakan node js paket :

npm install

Dilajutkan dengan menjalakan node js :

npm run dev

Sekarang kita memerlukan migrasi dengan perintah sebagai berikut :

php artisan migrate

Step 3 : Create Migration and Model

Pada langkah ini, kita harus membuat migrasi untuk tabel blog menggunakan perintah di bawah artisan. Jadi mari kita buka terminal dan jalankan perintah di bawah ini:

php artisan make:migration create_blogs_table

database/migrations/2021_04_12_092627_create_blogs_table.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBlogsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('blogs', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body');
$table->timestamps();

});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('blogs');
}
}

Kemudian jalankan perintah berikut :

php artisan migrate

Dilanjutkan  lagi dengan membuat model dengan perintah ini :

php artisan make:model Blog

App/Models/Blog.php

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Blog extends Model
{
use HasFactory;

protected $fillable = [
'title', 'body',
];

Step 4 : Create Blog Component

Pada langkah ini, kita harus membuat komponen livewire blog menggunakan perintah di bawah ini. Jadi mari kita buka terminal dan jalankan perintah bello:

php artisan make:livewire blogs

Sekarang mereka membuat dua file di dengan path:

app/Http/Livewire/Blogs.php

resources/views/livewire/blogs.blade.php

Step 5 : Update Component File

Di sini Kami akan menulis metode render (), create (), openModal (), closeModal (), resetInputFields (), store (), edit () dan delete () untuk aplikasi crud kita.

Jadi, mari, perbarui file berikut.

app/Http/Livewire/Blogs.php

<?php
namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\Blog;

class Blogs extends Component
{
public $blogs, $title, $body, $blog_id;
public $isOpen = 0;


public function render()
{
$this->blogs = Blog::all();
return view('livewire.blogs');
}

public function create()

{
$this->resetInputFields();
$this->openModal();
}


/**
* The attributes that are mass assignable.
*
* @var array
*/

public function openModal()

{
$this->isOpen = true;
}


/**
* The attributes that are mass assignable.
*
* @var array
*/

public function closeModal()

{
$this->isOpen = false;
}



/**
* The attributes that are mass assignable.
*
* @var array
*/

private function resetInputFields(){

$this->title = '';
$this->body = '';
$this->blog_id = '';
}



/**

* The attributes that are mass assignable.
*
* @var array
*/

public function store()

{

$this->validate([

'title' => 'required',
'body' => 'required',
]);



Blog::updateOrCreate(['id' => $this->blog_id], [

'title' => $this->title,
'body' => $this->body
]);



session()->flash('message',

$this->blog_id ? 'Blog Updated Successfully.' : 'Blog Created Successfully.');
$this->closeModal();
$this->resetInputFields();
}

/**

* The attributes that are mass assignable.

*

* @var array

*/

public function edit($id)

{

$blog = Blog::findOrFail($id);
$this->blog_id = $id;
$this->title = $blog->title;
$this->body = $blog->body;
$this->openModal();

}



/**

* The attributes that are mass assignable.

*

* @var array

*/

public function delete($id)

{

Blog::find($id)->delete();
session()->flash('message', 'Blog Deleted Successfully.');

}

}
 

Step 6 : Update Blade Files

Di sini, kira akan memperbarui daftar file berikut untuk halaman create page, membuat halaman.Jadi, mari, perbarui file berikut.

resource/views/livewire/blogs.blade.php

<x-slot name="header"><h2 class="font-semibold text-xl text-gray-800 leading-tight">
Manage blogs (Laravel 8 Jetstream Livewire CRUD App Example - ikhwansaputera.blogspot.com)
</h2>
</x-slot>

<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-xl sm:rounded-lg px-4 py-4">
@if (session()->has('message'))
<div class="bg-teal-100 border-t-4 border-teal-500 rounded-b text-teal-900 px-4 py-3 shadow-md my-3" role="alert">
<div class="flex">

<div>
<p class="text-sm">{{ session('message') }}</p>
</div>
</div>
</div>
@endif
<button wire:click="create()" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded my-3">Create New Blog</button>
@if($isOpen)
@include('livewire.create')
@endif
<table class="table-fixed w-full">

<thead>
<tr class="bg-gray-100">
<th class="px-4 py-2 w-20">No.</th>
<th class="px-4 py-2">Title</th>
<th class="px-4 py-2">Body</th>
<th class="px-4 py-2">Action</th>
</tr>
</thead>
<tbody>
@foreach($blogs as $blog)
<tr>
<td class="border px-4 py-2">{{ $blog->id }}</td>
<td class="border px-4 py-2">{{ $blog->title }}</td>
<td class="border px-4 py-2">{{ $blog->body }}</td>
<td class="border px-4 py-2">
<button wire:click="edit({{ $blog->id }})" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Edit</button>
<button wire:click="delete({{ $blog->id }})" class="bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded">Delete</button>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>

resources/views/livewire/create.blade.php

 <div class="fixed z-10 inset-0 overflow-y-auto ease-out duration-400"><div class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
<div class="fixed inset-0 transition-opacity">
<div class="absolute inset-0 bg-gray-500 opacity-75"></div>
</div>
<!-- This element is to trick the browser into centering the modal contents. -->

<span class="hidden sm:inline-block sm:align-middle sm:h-screen"></span>?

<div class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" role="dialog" aria-modal="true" aria-labelledby="modal-headline">
<form>
<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4">

<div class="">
<div class="mb-4">
<label for="exampleFormControlInput1" class="block text-gray-700 text-sm font-bold mb-2">Title:</label>

<input type="text" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" id="exampleFormControlInput1" placeholder="Enter Title" wire:model="title">

@error('title') <span class="text-red-500">{{ $message }}</span>@enderror

</div>

<div class="mb-4">
<label for="exampleFormControlInput2" class="block text-gray-700 text-sm font-bold mb-2">Body:</label>

<textarea class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" id="exampleFormControlInput2" wire:model="body" placeholder="Enter Body"></textarea>

@error('body') <span class="text-red-500">{{ $message }}</span>@enderror

</div>
</div>
</div>

<div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse">

<span class="flex w-full rounded-md shadow-sm sm:ml-3 sm:w-auto">
<button wire:click.prevent="store()" type="button" class="inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 bg-green-600 text-base leading-6 font-medium text-white shadow-sm hover:bg-green-500 focus:outline-none focus:border-green-700 focus:shadow-outline-green transition ease-in-out duration-150 sm:text-sm sm:leading-5">

Save
</button>
</span>
<span class="mt-3 flex w-full rounded-md shadow-sm sm:mt-0 sm:w-auto">
<button wire:click="closeModal()" type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 px-4 py-2 bg-white text-base leading-6 font-medium text-gray-700 shadow-sm hover:text-gray-500 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue transition ease-in-out duration-150 sm:text-sm sm:leading-5">
Cancel

</button>
</span>
</div>
</form>
</div>
</div>
</div>

Step 7 : Add Route

Pada langkah ini, kita akan membuat rute untuk jetstream crud dengan livewire

routes/web.php

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Livewire\Blogs;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
return view('welcome');
});

Route::get('blog', Blogs::class);

Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');
 

Sekarang kita siap untuk menjalankan contoh aplikasi laravel 8 jetstream livewire crud jadi jalankan perintah di bawah ini untuk menjalankan dengan cepat dan mudah :

php artisan serve

Sekang Anda dapat membuka browser dengan alamat :

localhost:8000/blog

 Perlu saya ingatkan terlebih dahulu Anda register agar bisa menggunakan seperti gambar dibawah ini




 

 


Friday, January 15, 2021

Percona Server Alternatif selain MySQL


Banyak perusahaan mengandalkan kinerja, ketahanan, dan keamanan untuk database yang mereka gunakan yakni MySQL, Kini  telah hadir alternatif lain untuk mewujudkan hal yang sama dengan pengaturan yang relatif lebih mudah dan nyaman yakni database Percona Server, memberdayakan aplikasi dan situs web yang memungkinkan pencapaian tujuan bisnis.

Percona Server for MySQL® adalah pengganti drop-in free, kompatibel sepenuhnya, disempurnakan, dan open source untuk database MySQL apa pun. Ini memberikan kinerja, skalabilitas, dan instrumentasi yang unggul.

Server Percona untuk MySQL dipercaya oleh ribuan perusahaan untuk memberikan kinerja dan konkurensi yang lebih baik untuk penangan beban kerja  yang sangat menuntut, dan memberikan nilai yang lebih besar kepada pengguna server MySQL dengan kinerja yang dioptimalkan, skalabilitas dan ketersediaan kinerja yang lebih besar, pencadangan yang ditingkatkan, dan visibilitas yang ditingkatkan.

Percona adalah sebuah perusahaan perangkat lunak open source yang mengkhususkan diri dalam Dukungan pada MySQL , Consulting, Managed Services, dan Pelatihan. Perusahaan ini didirikan pada tahun 2006 oleh Peter Zaitsev dan Vadim Tkachenko dan berkantor pusat di Durham, North Carolina. Perusahaan ini meluncurkan Layanan Backup MySQL pada Juni 2014 sebagai bagian dari Layanan yang Dikelola. Perusahaan memberikan kontribusi kepada masyarakat MySQL melalui situs blog-nya, MySQL Performance blog. Perusahaan juga menjadi tuan rumah konferensi pengguna MySQL tahunan bernama "Percona Live" di Silicon Valley dan London. Pendiri perusahaan juga telah menerbitkan buku O'Reilly "High Performance MySQL".

Perusahaan membangun dan memelihara free, open source software MySQL untuk pengguna Percona Server, MySQL, dan MariaDB. Percona Server adalah varian dari sistem manajemen database relasional MySQL dan merupakan drop-in pengganti MySQL. Perusahaan juga memproduksi perangkat lunak open source termasuk Percona XtraDB Cluster, Percona XtraBackup dan Percona Toolkit.



Tuesday, February 25, 2020

Generate QR Code di Laravel

Kita tahu bahwa QR Code adalah jenis barcode matrix (atau barcode dua dimensi). Kode QR dapat menampung 3248 bit atau 406 byte. Dalam tutorial ini, kita akan membuat QR Code, di Laravel.
Berikut langkah-langkahnya :

  1. Instal Laravel 
  2. Instal Paket dan Konfigurasi 
  3. Penggunaan Dasar 
  4. Buat Rute 
  5. Buat dalam File Blade 
  6. Penggunaan Lanjutan

Langkah 1: Instal Laravel


Buka folder proyek Anda (untuk xampp, buka folder htdocs) dan tulis perintah ini di terminal Anda untuk membuat proyek.

composer require belajarqrcode/simple-qrcode

Langkah 2: Instal Paket dan Konfigurasi

Kita akan menggunakan paket bernama ‘
simplesoftwareio/simple-qrcode. Mari kita gunakan komposer untuk menginstal paket ini:

composer require simplesoftwareio/simple-qrcode

Sekarang kita harus menambahkan penyedia layanan dan alias ke file konfigurasi. Buka file config / app.php dan masukkan kode seperti di bawah ini:

'providers' => [

    ....

    SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class,

],

'aliases' => [

    ....

    'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class,

],

Langkah 3: Penggunaan Dasar

Kita telah berhasil menginstal QR Code di aplikasi Laravel. Mari kita lihat beberapa penggunaan dasar. Sintaks dasarnya adalah:



QrCode::size(100)->generate('MyNotePaper');

Size: We can set the size of the QR code image.

QrCode::size(300)->generate('MyNotePaper');

Color: We can also set background color.

QrCode::size(250)->backgroundColor(255,255,204)->generate('MyNotePaper');

Colorful QR Code

Langkah 4: Buat Route

Pada langkah ini, kita akan membuat rute ‘qrcode’. Salin dan tempel kode ini dalam file routes/web.php


<?php

Route::get('qrcode', function () {
    return QrCode::size(250)
        ->backgroundColor(255, 255, 204)
        ->generate('MyNotePaper');
});

Sekarang jalankan aplikasi Anda dan kunjungi URL untuk melihat QR Code. 🙂

// run application
php artisan serve
// visit the route
http://localhost/project:8000/qrcode

Langkah 5: Hasilkan di File Blade


Kita dapat dengan mudah menghasilkan QR Code di file blade. Formatnya adalah:

{!! QrCode::generate('MyNotePaper'); !!}

Mari kita lihat sebuah contoh:

Buat rute:

Route::get('qrcode_blade', function () {
    return view('qr_code');
});


Sekarang buat file blade di folder sumber daya bernama ‘qr_code_blade.php’.
qr_code_blade.php

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <title>Laravel QR Code Example</title>
</head>
<body>

<div class="text-center" style="margin-top: 50px;">
    <h3>Laravel QR Code Example</h3>

    {!! QrCode::size(300)->generate('MyNotePaper'); !!}

    <p>MyNotePaper</p>
</div>

</body>
</html>


Mari kita lihat hasilnya dengan mengunjungi rute dari browser:


Langkah 6: Penggunaan Lanjutan

Lihat Kode QR tanpa Menyimpan: Anda dapat menampilkan gambar PNG tanpa menyimpan file dengan memberikan string mentah dan encode dengan base64_encode.

<img src="data:image/png;base64, {!! base64_encode(QrCode::format('png')->size(100)->generate('Make me into an QrCode!')) !!} ">

Format: Biasanya menghasilkan (); fungsi mengembalikan gambar svg. Ada beberapa format juga.

QrCode :: format ('png'); // Mengembalikan gambar PNG
QrCode :: format ('eps'); // Mengembalikan gambar EPS
QrCode :: format ('svg'); // Mengembalikan gambar SVG

Pengkodean: Kami juga dapat mengatur pengodean karakter:

QrCode :: encoding ('UTF-8') -> generate ('kode QR dengan simbol khusus ♠ ♥ !!');

Margin: Tetapkan margin dengan cara ini:

QrCode :: margin (10) -> menghasilkan ('MyNotePaper');

Bitcoin: Dengan bantuan fungsi pembantu ini, kami dapat mengirim pembayaran saat dipindai.

QrCode::BTC($address, $amount);

//Sends a 0.334BTC payment to the address
QrCode::BTC('bitcoin address', 0.334);

//Sends a 0.334BTC payment to the address with some optional arguments
QrCode::size(500)->BTC('address', 0.0034, [
    'label' => 'my label',
    'message' => 'my message',
    'returnAddress' => 'https://www.returnaddress.com'
]);


Pesan Teks: Kita dapat menulis sms dalam kode QR.

QrCode::SMS($phoneNumber, $message);

// Membuat pesan teks dengan nomor yang diisi.
QrCode :: SMS ('555-555-5555');

// Membuat pesan teks dengan nomor dan pesan diisi.
QrCode :: SMS ('555-555-5555', 'Isi pesan');

Nomor Ponsel: Memanggil nomor ponsel dari kode QR yang dipindai.

QrCode :: phoneNumber ($ phoneNumber);

QrCode :: phoneNumber ('555-555-5555');
QrCode :: phoneNumber ('1-800-Laravel');

Email: Kami juga dapat secara otomatis mengisi email, subjek dan isi ketika dipindai Kode QR:

QrCode :: email ($ to, $ subject, $ body);

// Mengisi alamat to
QrCode :: email ('foo@bar.com ');

// Mengisi alamat, subjek, dan isi email.
QrCode :: email ('foo@bar.com ',' Ini adalah subjeknya. ',' Ini adalah badan pesan. ');

// Mengisi hanya subjek dan isi email.
QrCode :: email (null, 'Ini subjeknya.', 'Ini adalah badan pesan.');

Lokasi Geo: Lewati bujur dan lintang melalui kode QR:

QrCode :: geo ($ latitude, $ longitude);

QrCode :: geo (37.822214, -122.481769);

Terhubung ke WiFi: Mudah terhubung ke WiFi dari kode QR yang dipindai.

QrCode :: wiFi ([
'enkripsi' => 'WPA / WEP',
'ssid' => 'SSID jaringan',
'kata sandi' => 'Kata sandi jaringan',
'hidden' => 'Apakah jaringan itu SSID yang disembunyikan atau tidak.'
]);

// Menghubungkan ke jaringan WiFi terbuka.
QrCode :: wiFi ([
ini

Monday, January 20, 2020

APLIKASI PERSURATAN E-Persuratan (Versi 2.5)



E-Persuratan hadir untuk membantu kebutuhan persuratan di kantor anda, mulai dari proses pencatatan surat masuk, surat keluar, pendistribusian surat (disposisi), hingga proses pencarian yang sangat mudah.

Dengan fitur yang telah disesuiakan dengan kebutuhan instansi kantor pemerintah maupun swasta akan sangat membantu manajemen dan pengelolaan surat-surat yang sebelumnya dikelola secara manual menjadi secara digital.

Perpaduan surat digital dan cloud storage bermakna aplikasi E-Persuratan ini digunakan untuk membantu persuratan digital dan tanpa instalasi, dengan menggunakan penyimpanan terpusat dan untuk mengaksesnya dibutuhkan koneksi internet ataupun hanya secara Local Area Networtk (LAN).

Aplikasi E-Persuratan ini selain bekerja di lingkup kerja internet tentunya harus ada koneksi internet, juga bisa dilingkup intranet, tinggal menyesuaikan dengan kebutuhan ditempat anda.

Berikut ini fitur utama aplikasi E-Persuratan.

1. Manajemen Surat Masuk
2. Manajemen Surat Keluar
3. Disposisi Surat
4. Notifikasi Surat masuk dan Disposisi surat
5. Manajemen User
6. Report (Laporan surat masuk, surat keluar, disposisi surat dan arsip berkas / dokumen)
7. Manajemen Arsip Berkas (untuk mengelola arsip berkas selain surat)
8. Tracking surat (untuk melihat status / progres surat)

MENGAPA E-Persuratan ?
1. Persuratan menjadi
2. Lebih Efektif & Efisien
3. Pencarian Lebih Mudah
Pergunakan semua kolom pencarian dan surat anda akan lebih spesifik ditemukan, karena E-Persuratan memiliki lebih dari satu kolom kata kunci pencarian
4. Pelaporan Tepat dan Akurat
Kemudahan melaporkan persuratan untuk pimpinan, dengan E-Persuratan kami menyajikan pelaporan data secara grafik dan tabel
5. Distribusi Lebih Cepat
Pendistribusian surat atau Disposisi langsung dilakukan melalui aplikasi tanpa perlu pengantar maupun buku agenda Disposisi
6. Data Terpusat dan Paperless
Semua dokumen dan data persuratan anda sudah tersimpan aman dan terpusat di aplikasi


Sunday, December 29, 2019

Laravel dan Package Pendukung

Package dibawah ini bisa di install menggunakan composer. Apa itu composer, singkatnya composer adalah dependensi manager untu PHP.

Mari kita mulai :

1. Socialite
  Dunia sekarang hampir semua orang menggunakan aplikasi sosial, nah dengan Socialite menawarkan fungsi yang menarik bagaimana cara mudah untuk menangani OAuth authentication. Hal ini memungkinkan user untuk melakukan otentikasi menggunakan jejaring social yang populer, dimana service yang mereka sediakan, diantaranya: Facebook, Twitter, Google, Github dan Bitbucket.

    Adapun penggunaannya terbilang sangat sederhana, berikut contoh code dalam menggunakan Socialite.

    $user = Socialite::driver('facebook')->user();

    // OAuth Two Providers
    $token = $user->token;
    $refreshToken = $user->refreshToken; // not always provided
    $expiresIn = $user->expiresIn;

    // All Providers
    $user->getId();
    $user->getEmail();
    $user->getName();   
    $user->getAvatar();

2. Spatie Role & Permission
    Sebuah role & permission menjadi sangat penting dalam aplikasi, sebab kegunaannya dapat menentukan hak-hak user dalam menggunakan aplikasi tersebut. Spatie hadir menawarkan package yang dimilikinya untuk membantu developer dalam membuat sebuah sistem role & permission. Fitur yang dimilikinya mencakup: Role, Permisssion, Direct Permissions, Middleware, Muptiple Blade Directive, Artisan Commands. Adapun repository-nya dapat dilihat di Github.
3. Sentinel Role Permission
    Seiring dengan Spatie, Cartalyst juga mengeluarkan sebuah package yang bertujuan untuk mengatur permission pada sebuah aplikasi, package ini bernama Sentinel. Fitur yang dimilikinya terbilang cukup lengkap karena telah meng-handle sistem authorization. Adapun fiturnya diantaranya: Authentication, Authorization, Registration, Users & Role Management, Driver Based Permission System, Flexibel Activation Scenario, Reminders (Reset Password), Inter-account throttling with DDoS protection, Custom hashing strategies, Multiple Sessions, Multiple login columns, Integration with Laravel, Allow use of multiple ORM implementations, Native facade for easy usage outside Laravel, Interface driven.
4. Laravel Debugbar
    Laravel debugbar adalah salah satu package yang sangat berguna dalam proses development, package ini akan menambahkan sebuah toolbar yang berisi banyak tools untuk proses debugging. Salah satu hal yang menarik digunakan adalah tool untuk mendeteksi berapa banyak query yang berjalan dalam sebuah halaman. Adapun repository dan dokumentasinya (semoga kedepannya dapat ikut mengulas package ini) dapat kamu lihat di Github.

5. Laravel Collective
   Laravel Collective merupakan package yang akan membantu kita dalam membuat suatu form dimana memiliki fitur model binding ketika kita mengedit suatu data yang ada didatabase maka akan secara otomatis mengisi dari data yang ada di table tersebut. begitu juga ketika kita membuat checkbox, select dan lain-lain.
Dokumentasi lengkap bisa di lihat di halaman resmi Laravel Collectiv

6. Yajra
   Yajra merupakan server-side datatable artinya kita akan menampilkan data menggunakan datatables tanpa harus memanggil seluruh data secara bersamaan, tapi kita bisa memanggil secara ajax jadi proses load datanya tidak akan terbabani.
Untuk melakukan instalasi dan dokumentasi lengkap, kunjungi web Yajrabox

6. Intervention Image
   Package ini adalah package pendukung untuk melengkapi package Laravel File Manager. Di gunakan untuk croping, membuat thumbnail dan resizing image.Dokumentasi lengkap cara instalasi ada di web resminya Intervension Image

7. Laravel Mix
   Salah satu package bawaan Laravel yang sangat berguna bagi frontend developer untuk melakukan compile yang terkait dengan frontend adalah dengan menggunakan Laravel Mix. Package ini sangat powerful untuk meng-handle assets dari aplikasi yang ada miliki dengan menggunakan webpack-builder.

    mix.js('resources/assets/js/app.js', 'public/js')
    .sass('resources/assets/sass/app.scss', 'public/css');

8. Eloquent Sluggable
   Slug adalah konversi title menjadi sebuah uniq string yang biasanya digunakan sebagai pengenal dalam sebuah URL. Misalnya saja, https://localhost.com/eloquent-sluggable, maka kata eloquent-sluggable adalah slug yang dimiliki dari domain localhost.com. Slug biasanya merujuk pada title dengan me-replace spasi yang dimilikinya menjadi -. Sebenarnya hal ini dapat dilakukan menggunakan kombinasi antara Mutators dan helper Str::slug milik Laravel.

   Jika kamu yang tidak ingin direpotkan dengan membuat logic-nya sendiri, maka package Eloquent-Sluggable ini sangat berguna untuk mengatasi masalah kamu. Penggunaannya pun cukup dengan cara sebagai berikut.

    class Post extends Eloquent
    {
       use Sluggable;
       protected $guarded = [];

       public function sluggable() {
           return [
               'slug' => [
                   'source' => ['title']
               ]
           ];
       }
    }

    $post = new Post([
       'title' => 'Rekomendasi Package Laravel Yang Dapat Mempermudah Pekerjaan Kamu',
    ]);

    // Maka $post->slug nya adalah "rekomendasi-package-laravel-yang-dapat-mempermudah-job"


9. Migration Generator
   Pernah tidak kamu menemui sebuah kondisi dimana database yang akan digunakan dalam sebuah project sudah tersedia dari aplikasi sebelumnya, sehingga terkadang menjadi pekerjaan yang cukup melelahkan apabila harus mengkonversi semua struktur database tersebut menjadi sebuah file migrations agar lebih mudah di-handle kedepannya. Package Migration Generator menawarkan sebuah solusi untuk men-generate file migration dari existing database, termasuk indexes dan foreign keys.

    Hanya dengan command:

    php artisan migrate:generate

    Perintah diatas akan men-generate seluruh table yang dimiliki menjadi file migrations, adapun jika kamu hanya akan men-generate table tertentu saja maka tersedia command:

    php artisan migrate:generate table1,table2
10. Laravel Backup
    Data menjadi hal yang teramat penting bagi sebuah aplikasi melebihi aplikasinya itu sendiri. Mengapa demikian? Karena apabila kehilangan source code aplikasi maka kita dapat membuatnya kembali dengan referensi data yang dimiliki, akan tetapi jika kita kehilangan data yang telah dikumpulkan selama beberapa waktu yang lama, maka tentu saja akan menjadi musibah besar bagi anda.

    Laravel Backup adalah sebuah package yang berfungsi sesuai namanya yakni membuat salinan berupa zip file dari seluruh file dan database pada aplikasi yang kita miliki. Selanjutnya file zip tersebut dapat kita pindahkan secara manual ke tempat penyimpanan lain. Adapun untuk menjalankan fungsi backup-nya hanya dengan command:

    php artisan backup:run

11. No Captcha
    Spammer telah ada dari zaman purbakala sepertinya hingga saat ini, maka teramat sangat menyebalkan apabila aplikasi kita digunakan oleh spammer. Terdapat sebuah package bernama No Captcha yang berfungsi untuk menerapkan Google reCaptcha validation yang akan melindungi sebuah form dari kegiatan spamming.

    Adapun code-nya terbilang sederhana penggunaannya dengan:

    NoCaptcha::shouldReceive('verifyResponse')
       ->once()
       ->andReturn(true);

    $response = $this->json('POST', '/daftar', [
       'g-recaptcha-response' => '1',
       'name' => 'Anugrah Sandi',
       'email' => 'nuge@daengweb.id',
       'password' => 'secret',
       'password_confirmation' => 'secret',
    ]);


12. Laravel Dompdf
  
  Terkadang kita membutuhkan sebuah laporan dengan format pdf guna berbagai keperluan administrasi dari pengguna aplikasi tersebut, maka di Laravel juga terdapat sebuah package yang dimana terusan dari library Dompdf, package tersebut bernama Laravel dompdf.
 
13. Laravel Excel
   
Selain laporan dengan format Pdf, Excel juga manjadi salah satu opsi yang terkadang dibutuhkan oleh pengguna sebuah aplikasi. Cara mudah dalam membuat laporan excel di Laravel adalah dengan menggunakan package Laravel Excel, dimana pada package ini telah mendukung hingga versi Laravel yang terbaru.
 
14. Laravel graphQL
   
GraphQL adalah data query language yang berfungis sebagai alternatif sekaligus sebuah konsep baru untuk membuat struktur REST API. Pada Laravel terdapat sebuah package yang dapat membantu kamu untuk menerapkan penggunakan graphQL pada aplikasi yang sedang kamu develop, package tersebut bernama Laravel graphQL.
 
15. Laravel Scout
   Laravel Scout merupakan package yang membantu kita untu membuat suatu fitur proses pencarian. Package ini memungkinkan kita menggunakan fitur pencarian berbasis full-text pada aplikasi.