Umumnya ketika kita men-generate aplikasi Web berbasis Yii, isi pada UserIdentity tidaklah ada getId(). Tetapi jika Anda memperhatikan semua tutorial, forum dan lain sebagainya, mengapa mereka menyarankan kita untuk meng-override fungsi getId()?
Mungkin Anda tidak akan asing dengan bentuk koding seperti berikut ini:
<?php class UserIdentity extends CUserIdentity { public function authenticate() { $users=array( // username => password 'demo'=>'demo', 'admin'=>'admin', ); if(!isset($users[$this->username])) $this->errorCode=self::ERROR_USERNAME_INVALID; else if($users[$this->username]!==$this->password) $this->errorCode=self::ERROR_PASSWORD_INVALID; else $this->errorCode=self::ERROR_NONE; return !$this->errorCode; } }
Nah koding di atas merupakan koding default dari kelas UserIdentity milik Yii. Jika Anda lihat, tidaklah ada fungsi getId(). Namun, jika Anda mengikuti tutorial bagaimana membuat blog, Anda akan diminta menulis koding baru di UserIdentity seperti berikut ini:
<?php class UserIdentity extends CUserIdentity { private $_id; public function authenticate() { $username=strtolower($this->username); $user=User::model()->find(’LOWER(username)=?’,array($username)); if($user===null) $this->errorCode=self::ERROR_USERNAME_INVALID; else if(!$user->validatePassword($this->password)) $this->errorCode=self::ERROR_PASSWORD_INVALID; else { $this->_id=$user->id; $this->username=$user->username; $this->errorCode=self::ERROR_NONE; } return $this->errorCode==self::ERROR_NONE; } public function getId() { return $this->_id; } }
Perhatikan. Anda diminta untuk menulis
private $_id;
Kemudian pada saat otentikasi berhasil, dilakukan
$this-> id=$user->id;
Dan terakhir, pada bagian bawah ditulis koding untuk override getId().
public function getId() { return $this-> id; }
Sebenarnya alasannya sangat sederhana. Jika kita tidak override getId(), maka ketika kita menulis Yii::app()->user->id, kita akan mendapatkan username. Tetapi jika kita melakukan override, maka hasilnya adalah nilai id dari user. Pada kenyataannya kita akan lebih memerlukan nilai ID dari user daripada username. Oleh karena itulah, hampir semua kasus, kita pasti harus meng-override getId() pada kelas UserIdentity.
Mantap Gan
Gimana ya cara install Yii? koq selalu gagal utk bikin aplikasi
Gagal bagaimana? Mungkin php.exe-nya gagal ditemukan oleh Windows?
Kalau php.exe gak ditemukan, solusinya adalah gini:
1. Klik kanan “my computer” pergi “system properties” cari “advanced” tab, klik “environment variables”
2. Di “system variables” cari variable tertulis “PATH” dan klik tombol “Edit”
3. Pada “Variable Value” tambahkan path php.exe path dengan sebuah titik koma di depan seperti ini(tanpa kutip) “;C:\Program Files\PHPexeFolder\”
“PHPexeFolder” ini hanya contoh, coba cari saja php.exe ada di mana pas install.
saya udah coba pasang scrypt untuk LDAP diatas tapi ga selalu muncul error
implode() [function.implode]: Invalid arguments passed
kenapa ya?