Badr Interactive Engineering
Berbagi pengalaman untuk menciptakan software yang lebih baik

Membuat Custom Blade Directive

Sebagai pengguna framework Laravel, tentunya kita sangat mengenal Blade Template Engine. Salah satu keuntungan yang kita dapatkan dalam menggunakan Blade dibandingkan hanya penggunakan plain PHP adalah kita dapat menggunakan Blade Directive seperti misalnya @section, @if, @foreach, @inject dan banyak directive lainnya untuk menggantikan kode PHP yang akan kita masukan kedalam halaman view yang kita buat sehingga membuat kode program kita menjadi lebih rapih dan nyaman dilihat.

Dalam artikel ini saya akan membahas tentang bagaimana membuat Blade Directive baru sesuai dengan kebutuhan kita seperti misalnya @checkuser, @isadmin atau @dateformat. Untuk dapat mendefinisikan Blade Directive baru kita dapat menggunakan fitur Blade::directive() yang telah disediakan oleh Laravel. Sebagai contoh, kita ingin membuat sebauh directive bernama @datetime yang secara otomatis akan mengkonversikan forma tanggal database YYYY-mm-dd menjadi format mudah dibaca oleh user seperti dd/mm/YYYY. Untuk dapat melakukan hal tersebut kita perlu menambahkan beberapa baris kode pada class App\Providers\AppServiceProvider seperti berikut ini:

... [read more]

CocoaPods - iOS Dependency Manager

CocoaPods adalah salah satu dependency manager di platform iOS, counterpart dari Gradle yang merupakan dependency manager Android. Di dalam repository official CocoaPods ada banyak library yang bisa dimanfaatkan untuk mempercepat development aplikasi.

Installasi CocoaPods di MacBook

Jalankan perintah ini di terminal untuk melakukan installasi CocoaPods di MacBook:

sudo gem install cocoapods

Penggunaan CocoaPods dalam Project

Untuk dapat menggunakan CocoaPods sebagai dependency manager lakukan langkah-langkah berikut ini:

  1. Create New Project iOS - AwesomeApp.
  2. Buka direktori tempat project tersebut berada di terminal.
  3. Jalankan perintah berikut di direktori tersebut:

     pod init --verbose
    
... [read more]

3 Hal Sebelum Anda Melakukan Migrasi

Tercerahkan oleh Database Versioning, setelah sekian lama import-export SQL dan kirim lewat e-mail, google drive, dan sejenisnya? Selamat datang di fitur migrasi. Mungkin pada awal saya memakai migrasi, sempet terpikir juga: buat apa ya struktur database dibuat kodenya? Toh bisa kan buat lewat phpMyAdmin atau sejenisnya, lebih cepet pake GUI lagi.

Walau belakangan tobat sih, karena pakai migrasi kegunaannya banyak. Pertama kali pakai migrasi, cukup frustasi juga karena kadang apa yang kita kira mudah, ternyata lumayan ada rintangannya juga. Dalam surat ini saya bermaksud mengurangi frustasi teman-teman sekalian. Iya apa semua siap? *gaya disko

1. Dropping Foreign Key

Biasanya aktivitas ini akan dilakukan ketika mengisi fungsi down() dari sebuah class migrasi.

<?php
class UpdateAssignment extends Migration {

    public function up() {

        Schema::table('assignment_file', function(Blueprint $table) {
            $table->foreign('assignment_id')->references('id')->on('assignment')->onUpdate('CASCADE')->onDelete('CASCADE');
        });

    }

    public function down() {

        Schema::table('assignment_file', function(Blueprint $table) {
            $table->dropForeign('assignment_id');
        });

    }
}
?>
... [read more]

Common Mistakes dalam Penggunaan fungsi Eloquent di Laravel (Part I)

Introduction

Kalau di forum sebelah Kang Aher sudah membahas tentang hal yang harus diketahui dari eloquent, nah di sini saya mau sedikit share tentang common mistakes dalam pemakaian eloquent based on pengalaman saya sendiri. Let’s check it out

1) Selalu memerika object kosong setelah melakukan find()

Kalian pasti sudah tidak asing lagi dengan method find() nya eloquent. Perlu diketahui bahwa method find ini jika tidak menemukan object yang diinginkan maka akan return null. Sehingga, kita perlu untuk mengecek hasil returnnya sebelum memanggil attribute atau function dari object tersebut.

Contoh salah :


echo User::find($user_id)->name // // will cause error if user is not found
echo Auth::user()->id; // will cause error if user is not login

$user = User::find($user_id);
$user->getFirstName(); // will cause error if user is not found

... [read more]

Membuat Active Menu dengan View Composer di Laravel

Dalam sebuah aplikasi web, biasanya yang bertipe web admin, umum kita jumpai sidebar berisi menu-menu. Daftar menu tersebut biasanya memiliki state active atau biasa alias tidak aktif, menunjukkan si user sedang berada di halaman apa. Berbagai template web admin biasanya sudah mempunyai styling sendiri seperti contoh di bawah ini:

template-1 template-2

Di atas adalah template favorit anak Badr, yaitu SB-Admin dan AdminLTE, sebagai contoh styling active menu. Biasanya, style tersebut didapat dengan menambahkan CSS class .active pada elemen menu item atau butir navigasi. Secara back-end, kita harus memastikan ketika view tersebut mau dilukis alias render, mana menu item yang harus diberi class .active.

Di Laravel, biasanya kita mengirim data atau variabel yang dibutuhkan View dari fungsi yang ada di Controller. Masalahnya, data menu yang aktif itu kita butuhkan untuk setiap halaman yang diminta. Solusi naifnya, ya kita mesti ngirim paramater seperti active_menu => 'dashboard' pada setiap fungsi yang ada. Nah, ada beberapa cara lain yang lebih cerdas untuk ini, salah satunya dengan View Composer.

... [read more]