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 fileyiic
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 Contact
Halaman Contact dengan kesalahan input
Halaman Contact dengan sukses
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
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
danphp_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
denganAUTO_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.
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 shelldi 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 membuat pengguna baru
Signup or Login in order to comment.