Beberapa rekan seringkali kebingungan dengan Lumen. Karena memang ada sedikit perbedaan. Tapi sedikit, tidak terlalu banyak. Karena Lumen juga menggunakan component yang digunakan Laravel.
Disini saya akan mencoba membantu teman-teman yang kesulitan saat menggunakan Lumen.
Install
Untuk install Lumen, gunakan composer atau lumen installer. Detailnya bisa dipelajari di dokumentasi http://lumen.laravel.com/docs/installation. Misalnya dengan
lumen new mylumen
Configuration
Tidak banyak konfigurasi yang bisa dilakukan di Lumen. Tapi bila anda ingin melakukan konfigurasi, anda bisa menggunakan file .env
. Tapi sebelumnya edit dulu file bootstrap/app.php
. Lalu hilangkan tanda comment pada Dotenv::load(__DIR__.'/../');
. Kini anda bisa edit beberapa konfigurasi di file .env
.
Misalnya untuk kebutuhan local development, anda mau mengganti default driver. Edit file .env
, lalu ganti
CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync
Untuk konfigurasi lebih lanjut, anda bisa copy directory vendor/laravel/lumen-framework/config/
ke root project directory anda. Setelah itu anda bisa menggunakan konfigurasi dari config
directory.
cp -r vendor/laravel/lumen-framework/config/ .
Facade
Mungkin ada beberapa dari kalian kebingungan karena Facade tidak bisa digunakan di Lumen. Misalnya saat menggunakan Auth::attempt()
. Solusinya sangat mudah. Edit file bootstrap/app.php
, lalu hilangkan tanda comment dari $app->withFacades();
Eloquent
Begitu juga dengan Eloquent, bila ingin menggunakannya edit file bootstrap/app.php
, cari $app->withEloquent();
, lalu hilangkan tanda comment.
Middleware
Global Middleware
Untuk menggunakan global middleware, anda bisa mengaktifkannya melalui file bootstrap/app.php
. Edit line seperti berikut
$app->middleware([ 'Illuminate\Cookie\Middleware\EncryptCookies', 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 'Illuminate\Session\Middleware\StartSession', 'Illuminate\View\Middleware\ShareErrorsFromSession', 'Laravel\Lumen\Http\Middleware\VerifyCsrfToken', ]);
Anda bisa memilih middleware mana yang akan digunakan. Tidak harus semua.
Route Middleware
Begitu pula dengan Route Middleware, anda bisa aktifkan dengan menghilangkan dan meregister (apa ini bahasanya?) di
$app->routeMiddleware([ ]);
Misalnya mau menambahkan auth.admin
,
$app->routeMiddleware([ 'auth.admin' => 'App\Http\Middleware\Auth\AdminMiddleware' ]);
Service Provider
Seperti konfigurasi diatas, untuk mengaktifkan/registrasi Service Provider baru, cukup hilangkan tanda comment atau tambahkan disekitar
$app->register('App\Providers\AppServiceProvider');
Routes
Untuk meng-organize routes lebih baik, anda bisa edit atau tambahkan line disekitar
require __DIR__.'/../app/Http/routes.php';
Misalnya saya mau ada routes khusus untuk admin.
require __DIR__.'/../app/Http/routes/admin.php';
Btw, untuk menggunakan routing di Lumen, anda harus menggunakan lengkap namespace dan nama class. Misalnya pada app/Http/routes.php
,
$app->get('api/news', 'App\Http\Controllers\NewsController@index'); $app->get('api/user/{userId}', 'App\Http\Controllers\UserController@show');
Agar lebih mudah, anda bisa menggunakan group.
$app->group(['namespace' => 'App\Http\Controllers'], function() { $app->get('api/news', 'NewsController@index'); $app->get('api/user/{userId}', 'UserController@show'); });
Views
Mungkin anda mau menggunakan Lumen bukan hanya untuk penyedia REST API. Tapi untuk membuat website biasa. Tapi by default Lumen tidak menyediakan directory resources
seperti di Laravel. So, caranya sangat mudah. Jalankan artisan make seperti ini
php artisan make resources
Dengan menggunakan resources
maka ada akan muncul resources
directory. Didalamnya sudah ada directory lang
dan views
.
Bila anda hanya membutuhkan views
, tapi tidak membutuhkan lang
, anda bisa menggunakan
php artisan make views
Ada beberapa parameter yang bisa digunakan dengan artisan make
, yaitu resources
, views
, lang
. Dua parameter lagi akan saya bahas dibawah.
Database Migrations & Seeders
Pada Lumen, tidak ada directory database
. Mungkin anda bingung bagaimana caranya menggunakan migrations dan seeders. Kita bisa menggunakan artisan make
untuk membuat directory database.
php artisan make database
Untuk membuat kedua directory resources
dan database
sekaligus, anda bisa menggunakan foundation
php artisan make foundation
That’s all… Semoga dapat membantu.
baru coba lumen om, kok ane tidak bisa membuat php artisan make resources
ERROR
[InvalidArgumentException]
Command “make” is not defined.
Did you mean one of these?
make:migration
make:seeder
Yang saya gunakan pada artikel ini adalah versi Lumen paling awal, yaitu 5.0.0. Kalau kita lihat struktur folder-nya https://github.com/laravel/lumen/tree/v5.0.0 , memang tidak ada folder resources. Sehingga perintah `./artisan make resources` ada.
Tapi di versi yang lebih baru, folder resources sudah ada. Sehingga kebedaraan perintah tersebut, tidak dibutuhkan lagi.