0 follower

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

1. 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.

2. 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