Membuat Aksi

Setelah kita memiliki model, kita dapat mulai menulis logika yang diperlukan untuk memanipulasi model. Kita tempatkan logika ini di dalam sebuah aksi controller. Untuk contoh form login, kode berikut diperlukan:

public function actionLogin()
{
    $model=new LoginForm;
    if(isset($_POST['LoginForm']))
    {
        // mengumpulkan data inputan dari user
        $model->attributes=$_POST['LoginForm'];
        // validasi inputan user dan redirect kembali ke halaman sebelumnya jika valid.
        if($model->validate())
            $this->redirect(Yii::app()->user->returnUrl);
    }
    // menampilkan form login.
    $this->render('login',array('model'=>$model));
}

Dalam contoh di atas, pertama kita membuat instance LoginForm; jika permintaannya adalah permintaan POST (berarti form login dikirimkan), kita mempopulasikan $form dengan data yang dikirimkan $_POST['LoginForm']; kemudian kita memvalidasi input dan jika sukses, mengalihkan browser pengguna ke halaman sebelumnya yang memerlukan otentikasi. Jika validasi gagal, atau jika aksi diakses dari awal, kita menyajikan tampilan login di mana isinya akan dijelaskan dalam subseksi berikut.

Tip: Dalam aksi login, kita menggunakan Yii::app()->user->returnUrl untuk mendapatkan URL halaman sebelumnya yang memerlukan otentikasi. Komponen Yii::app()->user adalah jenis CWebUser (atau kelas turunannya) yang mewakili informasi sesi pengguna (misalnya username, status). Untuk lebih jelasnya, lihat Otentikasi dan Otorisasi.

Mari kita perhatikan pernyataan PHP berikut yang muncul dalam aksi login:

$model->attributes=$_POST['LoginForm'];

Seperti yang kami jelaskan dalam Mengamankan Penempatan Atribut, baris kode ini mempopulasi model dengan data yang dikirimkan pengguna. Properti attributes didefinisikan oleh CModel yang mengharapkan array pasangan nama-nilai dan menempatkan setiap nilai ke atribut model terkait. Maka jika $_POST['LoginForm'] menghasilkan array seperti itu, kode di atas akan sama dengan kode panjang berikut (menganggap setiap atribut ada dalam array):

$model->username=$_POST['LoginForm']['username'];
$model->password=$_POST['LoginForm']['password'];
$model->rememberMe=$_POST['LoginForm']['rememberMe'];

Catatan: Agar $_POST['LoginForm'] menghasilkan array alih-alih string, kita tetap pada konvensi penamaan field input dalam tampilan. Pada keadaan tertentu, sebuah field input berkaitan dengan atribut a pada kelas model C, kita namai sebagai C[a]. Sebagai contoh, kita ingin menggunakan LoginForm[username] untuk menamai field input yang berkaitan dengan atribut username.

Tugas selanjutnya sekarang adalah membuat tampilan login yang harus berisi form HTML dengan field input yang dibutuhkan.

$Id: form.action.txt 1837 2010-02-24 22:49:51Z qiang.xue $

Be the first person to leave a comment

Please to leave your comment.