Showing posts with label Behaviour. Show all posts
Showing posts with label Behaviour. Show all posts

Monday 17 November 2014

Yii2 Behaviour untuk Input Field Otomatis

Standard
Oleh: Hafid Mukhlasin
Mungkin sama dengan Yii 1 (I force forget it), Yii2 juga mengenalkan Behaviour pada Models.
Misal kita punya tabel activity (id, name, created_at [datetime], created_by, update_at[datetime], update_by) maka field created_at, created_by, update_at, update_by bisa diisi otomatis oleh aplikasi kita. Dua behaviours ini yang akan membantu kita.
use yii\behaviors\TimestampBehavior;
use yii\behaviors\BlameableBehavior;
Pada models, tambahakn function behaviours.
public function behaviors(){
return [
'timestamp' => [
'class' => TimestampBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created','updated'],
ActiveRecord::EVENT_BEFORE_UPDATE => 'updated',
],
'value' => new Expression('NOW()'),
],
'blameable' => [
'class' => BlameableBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created_by','updated_by'],
ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_by',
],],];
}
Lalu pastikan pada models function rules, ke empat field tersebut tidak masuk dalam required.
public function rules()
{
return [
[['name'], 'required'],
...
}
Empat buat field yaitu field created_at, created_by, update_at, update_by tidak perlu diinputkan karena sudah otomatis input dari sistem jadi tidak memerlukan validasi.
Banyak orang yang mengalami permasalahan yaitu mengira kode yang dituliskan sudah benar tetapi ketika proses penyimpanan gagal. Solusinya anda dapat menampilkan kesalahan atau error ketika proses menyimpan, berikut contoh kode:
if($model->save()) {
Yii::$app->getSession()->setFlash('success', 'Data have updated.');
}
else{
$error = implode(', ',$model->errors);
Yii::$app->getSession()->setFlash('error', 'Data is not updated. Because '.$error);
}
Selamat berkreasi.

Copyright © AIMAGU. Jasa Pembuatan Website. All Rights Reserved
Design by Automattic | Blogger Theme by NewBloggerThemes | Official: www.aimagu.com