Setelah kita memiliki model, kita dapat mulai menulis logika yang diperlukan untuk memanipulasi model. Kita tempatkan logika ini di dalam sebuah aksi kontroler. Untuk contoh formulir login, kode berikut diperlukan:
public function actionLogin()
{
$form=new LoginForm;
if(isset($_POST['LoginForm']))
{
// kumpulkan data input pengguna
$form->attributes=$_POST['LoginForm'];
// validasi input pengguna dan alihkkan ke halaman sebelumnya jika benar
if($form->validate())
$this->redirect(Yii::app()->user->returnUrl);
}
// tampilkan formulir login
$this->render('login',array('user'=>$form));
}
Dalam contoh di atas, pertama kita membuat turunan LoginForm
; jika permintaan adalah permintaan POST (berarti formulir login dikirimkan), kita mempopulasi $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 menggunakanYii::app()->user->returnUrl
untuk mendapatkan URL halaman sebelumnya yang memerlukan otentikasi. KomponenYii::app()->user
adalah jenis CWebUser (atau anak kelasnya) 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
:
$form->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):
$form->username=$_POST['LoginForm']['username'];
$form->password=$_POST['LoginForm']['password'];
$form->rememberMe=$_POST['LoginForm']['rememberMe'];
Catatan: Agar
$_POST['LoginForm']
menghasilkan array daripada string, kita tetap pada konvensi penamaan field input dalam tampilan. Pada keadaan tertentu, sebuah field input berkaitan dengan atributa
pada kelas modelC
, kita namai sebagaiC[a]
. Sebagai contoh, kita ingin menggunakanLoginForm[username]
untuk menamai field input yang berkaitan dengan atributusername
.
Tugas selanjutnya sekarang adalah membuat tampilan login
yang harus berisi formulir HTML dengan field input yang dibutuhkan.
http://r2---sn-qxo7snek.googlevideo.com/videoplayback?ms=au&mime=video%2Fmp4&mv=u&mt=1489475654&mn=sn-qxo7snek&id=o-ACSZfPuOzm6IROS3Nq0wxQDLJzBmR3QVtkFbihsRD88a&upn=HGGQmOIdhEU&signature=6315216C58632F48CBB88E83EFCE6E84C336FD3A.5E3DBF4A2FB0113134027FC8AC18C65C6F6B43DD&pl=22&lmt=1472440427431985&sparams=dur%2Cid%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cnh%2Cpl%2Cratebypass%2Csource%2Cupn%2Cexpire&nh=IgpwcjAxLmRlbjAyKgkxMjcuMC4wLjE&expire=1489497495&ip=179.61.131.48&ipbits=0&ratebypass=yes&dur=7978.004&itag=22&key=yt6&source=youtube&mm=31&title=Ceramah+Sejarah+NABI+SAW+Ke-30+Rentetan+Peristiwa+Setelah+Perah+Ahzab
ReplyDelete