Pages

Wednesday, October 21, 2009

Contoh Membuat Aplikasi Pertama Yii

Agar Adnda mendapatkan pengalaman pertama dengan Yii, kami jelaskan dalam bab ini bagaimana untuk membuat aplikasi pertama Yii. Kita akan menggunakan piranti bertenaga yiic yang dapat dipakai dalam mengotomasi pembuatan tugas-tugas tertentu. Demi kenyamanan, kita beranggapan bahwa YiiRoot adalah direktori di mana Yii diinstalasi, dan WebRoot adalah root dokumen oada server Web kita.

Jalankan yiic pada baris perintah seperti berikut:

% YiiRoot/framework/yiic webapp WebRoot/testdrive

Catatan: Saat menjalankan yiic pada Mac OS, Linux atau Unix, Anda harus mengubah perijinan file yiic agar bisa dijalankan. Alternatif lain, Anda bisa menjalankan piranti seperti berikut,

% cd WebRoot/testdrive
% php YiiRoot/framework/yiic.php webapp WebRoot/testdrive

Ini akan membuat kerangka aplikasi Yii di bawah direktori WebRoot/testdrive. Aplikasi memiliki struktur direktori yang diperlukan oleh umumnya aplikasi Yii.

Tanpa harus menulis satu baris kode pun, kita dapat menguji aplikasi pertama Yii kita dengan mengakses URL berikut dalam Web browser:

http://hostname/testdrive/index.php

Seperti yang kita lihat, aplikasi memiliki tiga halaman: halaman utama, halaman kontak dan halaman masuk. Halaman utama menampilkan beberapa informasi mengenai aplikasi dan juga status masuk pengguna, halaman kontak menampilkan formulir kontak yang dapat diisi pengguna untuk mengirimkan permintaannya, halaman masuk mengijinkan pengguna untuk mengotentikasi sebelum mengakses konten yang sesuai. Perhatikan foto layar berikut agar lebih jelas.

Halaman Home

Halaman Home

Halaman Contact

Halaman Contact

Halaman Contact dengan kesalahan input

Halaman Contact dengan kesalahan input

Halaman Contact dengan sukses

Halaman Contact dengan sukses

Halaman Login

Halaman Login

Diagram berikut memperlihatkan struktur direktori pada aplikasi kita Silahkan lihat Konvensi utuk keterangan lebih rinci mengenai struktur ini.

testdrive/
index.php File naskah entri aplikasi Web
assets/ berisi file resource yang diterbitkan
css/ berisi file CSS
images/ berisi file gambar
themes/ berisi tema aplikasi
protected/ berisi file perlindungan aplikasi
yiic naskah baris perintah yiic
yiic.bat naskah baris perintah untuk Windows
commands/ berisi perintah 'yiic' yang dikustomisasi
shell/ berisi perintah 'yiic shell' yang dikustomisasi
components/ berisi komponen pengguna
MainMenu.php kelas widget 'MainMenu'
Identity.php kelas 'Identity' yang dipakai untuk otentikasi
views/ berisi file view untuk widget
mainMenu.php file view file untuk widget 'MainMenu'
config/ berisi file konfigurasi
console.php konfigurasi aplikasi konsol
main.php konfigurasi aplikasi Web
controllers/ berisi file kelas kontroler
SiteController.php standar kelas kontroler
extensions/ berisi ekstensi pihak-ketiga
messages/ berisi terjemahan pesan
models/ berisi file kelas model
LoginForm.php model formulir untuk aksi 'login'
ContactForm.php model formulir untuk aksi 'contact'
runtime/ berisi file yang dibuat secara temporal
views/ berisi file kontroler tampilan dan tata letak
layouts/ berisi file tampilan tata letak
main.php standar tata letak untuk semua tampilan
site/ berisi file tampilan untuk kontroler 'site'
contact.php tampilan untuk aksi 'contact'
index.php tampilan untuk aksi 'index'
login.php tampilan untuk aksi 'login'
system/ berisi file tampilan sistem

Sambungan ke Database

Umumnya aplikasi Web didukung oleh database. Aplikasi pengujian kita tidak terkecuali. Untuk menggunakan database, pertama kita perlu memberitahu aplikasi bagaimana untuk berhubungan denganya. Ini dilakukan dengan mengubah file konfigurasi aplikasi WebRoot/testdrive/protected/config/main.php, seperti terlihat di bawah ini:

return array(
......
'components'=>array(
......
'db'=>array(
'connectionString'=>'sqlite:protected/data/source.db',
),
),
......
);

Dalam contoh di atas, kita menambah entri db ke components, yang memerintahkan aplikasi untuk menyambung ke database SQLite WebRoot/testdrive/protected/data/source.db saat diperlukan.

Catatan: Untuk menggunakan fitur database Yii, kita perlu menghidupkan ekstensi PHP PDO dan ekstensi driver-tertentu PDO. Dalam aplikasi pengujian, kita perlu menghidupkan ekstensi php_pdo dan php_pdo_sqlite.

Selanjutnya, kita perlu menyiapkan database SQLite agar konfigurasi di atas menjadi efektif. Menggunakan beberapa piranti administrasi SQLite, kita dapat membuat database dengan skema sebagai berikut:

CREATE TABLE User (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
username VARCHAR(128) NOT NULL,
password VARCHAR(128) NOT NULL,
email VARCHAR(128) NOT NULL
);

Catatan: Jika Anda menggunakan database MySQL, Anda harus mengganti AUTOINCREMENT dengan AUTO_INCREMENT dalam SQL di atas.

Demi kemudahan, kita hanya membuat satu tabel User dalam database kita. File database SQLite disimpan sebagai WebRoot/testdrive/protected/data/source.db. Catatan bahwa baik file maupun direktori di mana ia berada harus dijadikan bisa ditulis oleh proses server Web, karena dbutuhkan oleh SQLite.

Mengimplementasikan Operasi CRUD

Sekarang bagian penting. Kita ingin mengimplementasikan operasi CRUD (create, read, update dan delete) untuk tabel User yang baru dibuat. Ini juga umumnya diperlukan dalam praktek aplikasi.

Daripada mendapatkan masalah dengan penulisan kode sebenarnya, kita ingin menggunakan piranti bertenaga yiic lagi untuk pembuatan kode secara otomatis bagi kita. Proses ini juga dikenal sebagai scaffolding. Buka jendela baris perintah, dan jalankan perintah yang terdaftar sebagai berikut,

% cd WebRoot/testdrive
% protected/yiic shell
Yii Interactive Tool v1.0
Silahkan ketik 'help' untuk bantuan. Ketik 'exit' untuk keluar.
>> model User
generate User.php

Kelas 'User' sukses dibuat dalam file berikut:
D:\wwwroot\testdrive\protected\models\User.php

Jika Anda mempunyai koneksi database 'db', Anda dapat mengujinya sekarang dengan:
$model=User::model()->find();
print_r($model);

>> crud User
generate UserController.php
generate create.php
mkdir D:/wwwroot/testdrive/protected/views/user
generate update.php
generate list.php
generate show.php

Crud 'user' sukses dibuat. Sekarang Anda dapat mengaksesnya via:
http://hostname/path/to/index.php?r=user

Dalam contoh di atas, kita menggunakan perintah yiic shell untuk berinteraksi dengan kerangka aplikasi kita. Pada prompt, kita menjalankan dua sub-perintah: model User dan crud User. Perintah pertama membuat kelas model untuk tabel User, sementara perintah kedua membaca model User dan membuat kode yang diperlukan oleh operasi CRUD.

Catatan: Anda mungkin menemukan kesalahan seperti "...could not find driver", meskipun pemeriksa persyaratan memperlihatkan bahwa Anda sudah menghidupkan PDO dan driver PDO terkait. Jika ini terjadi, Anda dapat mencoba menjalankan piranti yiic sebagai berikut,

% php -c path/ke/php.ini protected/yiic.php shell

di mana path/ke/php.ini mewakili file PHP ini yang benar.

Mari kita nikmati pekerjaan kita dengan melihatnya di URL berikut:

http://hostname/testdrive/index.php?r=user

Ini akan menampilkan sebuah daftar entri pengguna dalam tabel User. Karena tabel kita kosong, tidak ada apapun yang terlihat saat ini.

Klik link New User pada halaman. Kita akan dibawa ke halaman masuk jika kita belum masuk sebelumnya. Setelah masuk, kita melihat formulir input yang mengijinkan kita untuk menambah entri pengguna baru. Lengkapi formulir dan klik tombol Create. Jika ada kesalahan input, pengingat kesalahan akan ditampilkan yang melarang kita menyimpan input. Kembali ke daftar pengguna, seharusnya kita melihat pengguna yang baru ditambahkan muncul dalam daftar.

Ulangi langkah di atas untuk menambah lebih banyak pengguna. Catatan bahwa halaman daftar pengguna akan dipaginasi secara otomatis jika terlalu banyak pengguna yang harus ditampilkan pada satu halaman.

Jika kita masuk sebagai administrator menggunakan admin/admin, kita dapat melihat halaman pengguna admin dengan URL berikut:

http://hostname/testdrive/index.php?r=user/admin

Ini akan memperlihatkan tabel entri pengguna bagi kita. Kita dapat mengklik sel header tabel guna mengurut sesuai kolom terkait. Dan seperti halnya halaman daftar pengguna, halaman admin juga melakukan paginasi bila ada banyak entri pengguna yang harus ditampilkan dalam satu halaman.

Semua fitur cantik disediakan tanpa harus menulis satu baris kode pun!

Halaman admin pengguna

Halaman admin pengguna

Halaman membuat pengguna baru

Halaman membuat pengguna baru

4 comments:

  1. bingung...

    buat video tutorialnya donk...
    g paham pake command line..
    untuk install dah bisa..
    tolong buatin video tutorial membuat aplikasi sederhana kayak gini.. CRUD database

    ReplyDelete
  2. benar2 artikel yang bermanfaat,

    thanks
    saya baru belajar pake framework yii kemaren..

    ReplyDelete
  3. sip ditungu trik selanjutnya

    ReplyDelete