# Membuat Kode menggunakan Gii ¶

Bagian ini akan menjelaskan bagaimana cara menggunakan Gii untuk membuat kode secara otomatis yang mengimplementasikan fitur-fitur yang bersifat umum dalam sebuah web site. Menggunakan Gii untuk membuat kode sesederhana menginput informasi yang sesuai per satu instruksi seperti yang diterangkan pada halaman web Gii.

Sepanjang bagian ini, anda akan mempelajari bagaimana cara untuk:

- Mengaktifkan Gii pada aplikasi anda,
- Menggunakan Gii untuk membuat class ActiveRecord
- Menggunakan Gii untuk membuat kode yang mengoperasikan CRUD untuk database,
- Memodifikasi kode yang sudah dibuat oleh Gii.

## Memulai Gii ¶

Gii telah disediakan oleh Yii sebagai module. Anda dapat mengaktifkan Gii dengan mengatur konfigurasi Gii pada properti modules dari objek aplikasi. Tergantung bagaimana anda mengatur aplikasi anda, kode di bawah ini sudah disediakan pada file konfigurasi `config/web.php`:

    $config = [ ... ];

    if (YII_ENV_DEV) {
        $config['bootstrap'][] = 'gii';
        $config['modules']['gii'] = [
            'class' => 'yii\gii\Module',
        ];
    }

Konfigurasi di atas menyatakan bahwa, ketika mode development environment aktif, maka aplikasi harus mengikutkan module yang bernama `gii`, dimana objek tersebut merupakan class yii\gii\Module.

Jika anda melihat entry script `web/index.php` pada aplikasi anda, anda akan menemukan baris dibawah ini, yang menyatakan secara explisit bahwa `YII_ENV_DEV` sama dengan `true`.

    defined('YII_ENV') or define('YII_ENV', 'dev');

Karna baris tersebut, aplikasi anda harusnya sudah berada pada mode development, dan secara otomatis mengaktifkan Gii karena konfigurasi sebelumnya. Anda dapat mengakses Gii melalui URL di bawah ini:

    http://hostname/index.php?r=gii

> Catatan: Jika anda mengakses Gii melalui komputer diluar komputer localhost anda, secara default akses tidak akan diperbolehkan karna alasan keamanan. Anda dapat mengatur Gii untuk menambah alamat IP yang di perbolehkan seperti ini,

>     'gii' => [
>         'class' => 'yii\gii\Module',
>         'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // adjust this to your needs
>     ],

## Membuat class Active Record ¶

Untuk menggunakan Gii dalam membuat class Active Record, pilih "Model Generator" (dengan cara mengklik link pada halaman index Gii). Kemudian isi form dengan data berikut:

- Table Name: `country`
- Model Class: `Country`

Selanjutnya, klik pada tombol "Preview". Anda akan melihat `models/Country.php` pada daftar class yang akan dibuat. Anda bisa mengklik nama dari class tersebut untuk melihat isi kodenya.

Pada saat menggunakan Gii, jika anda sudah membuat file dengan nama yang sama sebelumnya dan akan menimpanya, klik tombol `diff` disebelah nama file untuk melihat perbedaan antara kode yang akan dibuat dengan kode yang ada saat ini.

Jika akan menimpa file yang sudah ada, centang kotak di sebelah tulisan "overwrite" dan kemudian klik tombol "Generate". Jika anda membuat file baru, anda cukup mengklik tombol "Generate".

Selanjutnya, anda akan melihat halaman konfirmasi yang memberitahui bahwa kode berhasil dibuat. Jika sebelumnya anda sudah mempunyai file yang sama, anda juga akan melihat pesan yang memberitahukan bahwa file tersebut sudah ditimpa dengan file yang baru.

## Membuat CRUD ¶

CRUD adalah Create, Read, Update, dan Delete, yang merepresentasikan empat tugas umum yang melibatkan website secara umum. Untuk membuat CRUD menggunakan Gii, pilih tombol "CRUD Generator" (dengan cara mengklik pada halaman index Gii). Untuk contoh "negara", isi form yang ditampilkan dengan data berikut:

- Model Class: `app\models\Country`
- Search Model Class: `app\models\CountrySearch`
- Controller Class: `app\controllers\CountryController`

Selanjutnya, klik tombol "Preview". Anda akan melihat daftar file-file yang akan dibuat, seperti gambar dibawah ini.

Jika anda sebelumnya sudah membuat file `controllers/CountryController.php` dan `views/country/index.php` (pada bagian bekerja dengan database), centang kotak "overwrite" untuk menimpa file tersebut. (File pada bagian bekerja dengan database tidak memiliki dukungan CRUD secara penuh.)

## Mari kita coba ¶

Untuk melihat bagaimana proses kerjanya, gunakan browser anda untuk mengakses URL dibawah ini:

    http://hostname/index.php?r=country%2Findex

Anda akan melihat tabel data yang menampilkan negara dari tabel pada database. Anda dapat mengurutkan tabel, atau memfilter dengan menginput pencarian filter pada baris judul kolom.

Disetiap negara yang tampil pada tabel, anda dapat memilih apakah akan melihat (view) detail, memperbaharui (update), atau menghapus (delete) data tersebut, anda juga dapat mengklik tombol "Create Country" yang berada di atas tabel tersebut untuk menampilkan form untuk membuat data negara yang baru.

Dibawah ini adalah daftar file yang dihasilkan oleh Gii, mungkin saja anda ingin melakukan observasi bagaimana fitur-fitur ini di implementasikan, atau melakukan modifikasi terhadap file-file yang dihasilkan:

- Controller: `controllers/CountryController.php`
- Model: `models/Country.php` dan `models/CountrySearch.php`
- View: `views/country/*.php`

> Info: Gii di desain agar mudah di modifikasi, dan dikembangkan. Menggunakan Gii dapat membuat pengembangan aplikasi anda menjadi lebih cepat. Untuk informasi lebih lanjut, silahkan melihat bagian Gii.

## Penutup ¶

Pada bagian ini, anda telah mengetahui bagaimana cara menggunakan Gii untuk membuat kode yang mengimplementasikan fungsi CRUD secara lengkap dalam mengelola data yang tersimpan pada database.