Untuk model Comment
, kita utamanya perlu mengubah method rules()
dan attributeLabels()
. Method attributeLabels()
mengembalikan sebuah mapping antara nama atribut dan label atribut. Kita tidak perlu menyentuh relations()
karena kode yang dihasilkan yiic
sudah cukup baik.
rules()
¶Pertama-tama kita mengubah rule (aturan) validasi yang dibuat oleh yiic
. Berikut merupakan aturan untuk comments:
public function rules()
{
return array(
array('content, author, email', 'required'),
array('author, email, url', 'length', 'max'=>128),
array('email','email'),
array('url','url'),
);
}
Di contoh atas, kita menentukan bahwa atribut author
, email
dan content
wajib diisi; panjang dari author
, email
dan url
tidak boleh melewati 128; atribut email
harus berupa alamat email yang valid ; dan atribut url
harus berupa URL yang valid.
attributeLabels()
¶Kemudian kita kustomisasi method attributeLabels()
untuk mendeklarasi tampilan label untuk setiap atribut model. Method ini mengembalikan array yang terdiri dari pasangna nama-label. Ketika memanggil CHtml::activeLabel() akan menampilkan label dari atribut.
public function attributeLabels()
{
return array(
'id' => 'Id',
'content' => 'Comment',
'status' => 'Status',
'create_time' => 'Create Time',
'author' => 'Name',
'email' => 'Email',
'url' => 'Website',
'post_id' => 'Post',
);
}
Tips: Jika label untuk atribut tidak dideklarasikan di dalam
attributeLabels()
, maka sebuah algoritma akan digunakan untuk menghasilkan label yang sesuai. Misalnya, sebuah labelCreate Time
akan digenerate dari atributcreate_time
ataucreateTIme
.
Di karenakan kita ingin menyimpan waktu pembuatan dari comment, kita meng-override method beforeSave()
pada Comment
seperti kita melakukannya pada model Post
:
protected function beforeSave()
{
if(parent::beforeSave())
{
if($this->isNewRecord)
$this->create_time=time();
return true;
}
else
return false;
}
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.