[Yii Framework] Membuat Approval Data

Sebuah masalah yang sering di alami pada pembangunan Sistem Informasi adalah adanya sebuah approval pada suatu data. Sebenarnya untuk melakukan ini kita hanya perlu menambahkan sebuah attribut “status” pada tabel yang akan menerapkan hal ini. Tapi tidak ada salahnya saya paparkan cara pembuatannya:

Pertama, tambahkan sebuah attribut “status” pada tabel yang anda maksud. Misal saya sebelum nya memiliki tabel dengan attribut “ID” dan “ISI”. Nah, karena akan diterapkan mekanisme approval data, maka tambahkan sebuah attribut status sehingga attribut yang terdapat disana menjadi “id”, “isi”, dan “status”. Anda dapat memberikan tipe status dengan tipe apa saja sesuai dengan keperluan anda. Tapi saya disini menggunakan tipe “tiny int” dimana yang bisa masuk ke dalam status hanya nilai 0 dan 1. Silahkan anda modifikasi jika anda butuh status yang lebih dari 2 nilai.

Setiap user melakukan input data ke tabel anda, pastikan ada nilai default yang akan di masukkan ke “status”. Caranya adalah pastikan “status” not required dengan mengeset model nya. Hilangkan input form “status” pada form entri data nya. Lalu untuk melakukan set default, buat actionCreate pada controller anda menjadi seperti berikut:

	public function actionCreate()
	{
		$model=new NamaModel;
		if(isset($_POST['NamaModel']))
		{
			$model->attributes=$_POST['NamaModel'];
			$model->status=0;
			if($model->save())
				$this->redirect(array('view','id'=>$model->id));
		}
		$this->render('create',array(
			'model'=>$model,
		));
	}

Penjelasan : Code di atas tidak jauh berbeda dengan actionCreate hasil generate GII, hanya menambahkan sebuah perintah untuk mengeset nilai default status nya menjadi “0”.

Setelah itu, buatlah sebuah action yang digunakan untuk mengupdate nilai status nya seperti berikut:

	public function actionUpdates($id)
	{
		$model=$this->loadModel($id);
		$model->status=1;
		if($model->save())
			$this->redirect(array('view','id'=>$model->id));

		$this->render('update',array(
			'model'=>$model,
		));
	}

Penjelasan : code di atas akan mengupdate nilai “status” menjadi 1. Pastikan anda memberi izin pada actionUpdates dengan cara melakukan pengesetan pada fungsi “accessRule” nya..

Lalu agar dapat melakukan eksekusi action tersebut anda tinggal tambahkan code berikut pada view anda:

<?php echo CHtml::linkButton('Approve',array('submit'=>array('updates','id'=>$model->id)));  ?>

Lalu jalankan program anda… Jika berhasil, maka setelah anda click button di atas anda akan melihat data anda telah berubah status nya menjadi “1”.

Selesai… Selamat mencoba….

Semoga membantu…😀

4 Responses to [Yii Framework] Membuat Approval Data

  1. Ricko says:

    mas maaf komentnya g nyambung..
    minta bantuannya dong mas.. saya buat action manual di Controller, contoh action kirim data, gimana caranya kasih hak akses buat action tersebut, biar kaya actioncreate, actionupdate, dan macam-macam.
    mohon bantuannya ya mas,, baru kenal Yii

  2. di controller itu ada fungsi access rule, kamu tambahin aja di sana nama actionnya dan sesuaiin dengan level yang akses. Biar lebih paham, pelajari juga tentang hak akses di yii..

  3. BEN------ says:

    saya menemukan eror,

    CDbException

    CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`forum`.`comment`, CONSTRAINT `comment_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON UPDATE CASCADE). The SQL statement executed was: INSERT INTO `comment` (`judul`, `isi`, `status`) VALUES (:yp0, :yp1, :yp2)

    C:\xampp\htdocs\yii\framework\db\CDbCommand.php(338)

    326 return $n;
    327 }
    328 catch(Exception $e)
    329 {
    330 if($this->_connection->enableProfiling)
    331 Yii::endProfile(‘system.db.CDbCommand.execute(‘.$this->getText().’)’,’system.db.CDbCommand.execute’);
    332 $errorInfo = $e instanceof PDOException ? $e->errorInfo : null;
    333 $message = $e->getMessage();
    334 Yii::log(Yii::t(‘yii’,’CDbCommand::execute() failed: {error}. The SQL statement executed was: {sql}.’,
    335 array(‘{error}’=>$message, ‘{sql}’=>$this->getText().$par)),CLogger::LEVEL_ERROR,’system.db.CDbCommand’);
    336 if(YII_DEBUG)
    337 $message .= ‘. The SQL statement executed was: ‘.$this->getText().$par;
    338 throw new CDbException(Yii::t(‘yii’,’CDbCommand failed to execute the SQL statement: {error}’,
    339 array(‘{error}’=>$message)),(int)$e->getCode(),$errorInfo);
    340 }
    341 }

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: