Mohon masukan dari master2 yang dah biasa
Controler :
<?php
/**
* SiteController is the default controller to handle user requests.
*/
class PakageController extends Controller
{
public $layout='column1';
private $_model;
public function filters()
{
return array(
'accessControl',
);
}
/**
* Specifies the access control rules.
* This method is used by the 'accessControl' filter.
* @return array access control rules
*/
public function accessRules()
{
return array(
array('allow', // allow authenticated users to access all actions
'users'=>array('@'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
/**
* Displays a particular model.
*/
public function actionView()
{
$model=$this->loadModel();
$this->render('view',array(
'model'=>$model,
));
}
/**
* Creates a new model.
* If creation is successful, the browser will be redirected to the 'view' page.
*/
public function actionCreate()
{
$model=new Pakage;
/**
if(isset($_POST['Pakage']))
{
$model->attributes=$_POST['Pakage'];
if($model->save())
$this->redirect(array('index'));
}
$this->render('create',array(
'model'=>$model,
));
*/
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if (Yii::app()->request->isAjaxRequest)
{
echo CJSON::encode(array(
'status'=>'failure',
'divcreate'=>$this->renderPartial('_form', array('model'=>$model), true)
));
Yii::app()->end();
}
else
{
$this->render('create',array(
'model'=>$model
));
}
}
/**
* Updates a particular model.
* If update is successful, the browser will be redirected to the 'view' page.
*/
public function actionUpdate()
{
/* old code
$model=$this->loadModel();
if(isset($_POST['Pakage']))
{
$model->attributes=$_POST['Pakage'];
if($model->save())
$this->redirect(array('index'));
}
$this->render('update',array(
'model'=>$model,
));
*/
$id=$_POST['id'];
$model=$this->loadModel($id[0]);
if (Yii::app()->request->isAjaxRequest)
{
echo CJSON::encode(array(
'status'=>'failure',
'id'=>$model->id,
'pakage_cd'=>$model->pakage_cd,
'pakage_nm'=>$model->pakage_nm,
'active'=>$model->active,
'divcreate'=>$this->renderPartial('_form', array('model'=>$model), true)
));
Yii::app()->end();
}
else
{
$this->render('update',array(
'model'=>$model
));
}
$this->render('update',array(
'model'=>$model
));
}
/**
* Manages all models.
*/
public function actionIndex()
{
$model=new Pakage;
if(isset($_GET['Pakage']))
$model->attributes=$_GET['Pakage'];
$this->render('index', array(
'model'=>$model,
));
}
/**
*
*
*/
public function actionWrite()
{
if(isset($_POST['Pakage']))
{
$dataku = new Pakage;
$model=new Pakage;
$dataku->attributes=$_POST['Pakage'];
if ( (int)$dataku->attributes['id'] > 0)
{
$model=$this->loadModel($id[0]);
$model->pakage_cd=$dataku->attributes['pakage_cd'];
$model->pakage_nm=$dataku->attributes['pakage_nm'];
$model->active=$dataku->attributes['active'];
}
else
{
$model->attributes=$_POST['Pakage'];
}
try
{
if($model->save())
{
if (Yii::app()->request->isAjaxRequest)
{
echo CJSON::encode(array(
'status'=>'success',
'divcreate'=>"Data saved"
));
}
else
{
Yii::app()->user->setflash($id, array('title' => 'Success', 'content' => 'Data Saved') );
$this->redirect(array('index'));
}
}
}
catch (Exception $e)
{
$errormessage=$model->getErrors();
if ($errormessage == '')
{
$errormessage=$e->getMessage();
}
if (Yii::app()->request->isAjaxRequest)
{
echo CJSON::encode(array(
'status'=>'failure',
'div'=>$errormessage
));
}
}
}
}
/**
* Deletes a particular model.
* If deletion is successful, the browser will be redirected to the 'index' page.
*/
public function actionDelete()
{
if(Yii::app()->request->isPostRequest)
{
$this->loadModel()->delete();
if(!isset($_GET['ajax']))
$this->redirect(array('index'));
}
else
throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
}
/**
* Returns the data model based on the primary key given in the GET variable.
* If the data model is not found, an HTTP exception will be raised.
*/
public function loadModel($id)
{
/* old code
if($this->_model===null)
{
if(isset($_GET['id']))
$this->_model=Pakage::model()->findByPk($_GET['id']);
if($this->_model===null)
throw new CHttpException(404,'The requested page does not exist.');
}
return $this->_model;
*/
$model=Pakage::model()->findByPk((int)$id);
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
}
Berikut adalah Halaman Index :
<?php
/*
$this->breadcrumbs=array(
'pakage',
); */
?>
<!--h1>Manage pakage</h1-->
<script type="text/javascript">
// here is the magic
function adddata()
{
<?php echo CHtml::ajax(array(
'url'=>array('pakage/create'),
'data'=> "js:$(this).serialize()",
'type'=>'post',
'dataType'=>'json',
'success'=>"function(data)
{
if (data.status == 'failure')
{
$('#pakageDialog div.divcreate').html(data.div);
$('#yt0').val('Create');
$('#Pakage_id').val(data.id);
$('#Pakage_pakage_cd').val(data.pakage_cd);
$('#Pakage_pakage_nm').val(data.pakage_nm);
// Here is the trick: on submit-> once again this function!
$('#pakageDialog div.divcreate form').submit(adddata);
}
else
{
$('#pakageDialog div.divcreate').html(data.div);
setTimeout(\"$('#pakageDialog').dialog('close') \",3000);
}
} ",
))?>;
return false;
}
</script>
<script type="text/javascript">
function editdata()
{
<?php
echo CHtml::ajax(array(
'url'=>array('pakage/update'),
'data'=> array('id'=>'js:$.fn.yiiGridView.getSelection("pakage-grid")'),
'type'=>'post',
'dataType'=>'json',
'success'=>"function(data)
{
if (data.status == 'failure')
{
$('#pakageDialog div.divcreate').html(data.div);
$('#yt0').val('Save');
$('#Pakage_id').val(data.id);
$('#Pakage_pakage_cd').val(data.pakage_cd);
$('#Pakage_pakage_nm').val(data.pakage_nm);
$('#Pakage_active').val(data.active);
if (data.active == '1')
{
$('#active').checked='checked';
}
// Here is the trick: on submit-> once again this function!
$('#pakageDialog div.divcreate form').submit(editdata);
}
else
{
$('#pakageDialog div.divcreate').html(data.div);
setTimeout(\"$('#pakageDialog').dialog('close') \",3000);
}
} ",
))?>;
return false;
}
</script>
<script type="text/javascript">
function deletedata()
{
<?php
echo CHtml::ajax(array(
'url'=>array('pakage/delete'),
'data'=> array('id'=>'js:$.fn.yiiGridView.getSelection("pakage-grid")'),
'type'=>'post',
'dataType'=>'json',
'success'=>"function(data)
{
} ",
))?>;
$.fn.yiiGridView.update('pakage-grid');
return false;
}
</script>
<script type="text/javascript">
function refreshdata()
{
$.fn.yiiGridView.update('pakage-grid');
return false;
}
</script>
<h1>Manage pakage</h1>
<?php $this->beginWidget('zii.widgets.jui.CJuiDialog', array(
'id'=>'pakageDialog',
'options'=>array(
'title'=>'pakage',
'autoOpen'=>false,
'modal'=>true,
'width'=>600,
'height'=>275,
),
));
?>
<div class="divcreate"></div>
<?php
echo $this->renderPartial('_form', array('model'=>$model));
$this->endWidget('zii.widgets.jui.CJuiDialog');
?>
<?php
$imgAdd = CHtml::image(Yii::app()->request->baseUrl.('/images/add.gif'));
$imgEdit = CHtml::image(Yii::app()->request->baseUrl.('/images/edit.gif'));
$imgDelete = CHtml::image(Yii::app()->request->baseUrl.('/images/delete.gif'));
echo CHtml::link($imgAdd, '#', array(
'style'=>'cursor: pointer; text-decoration: underline;',
'title'=>'Add Data',
'onclick'=>'{adddata(); $("#pakageDialog").dialog("open"); $.fn.yiiGridView.update("absrule-grid");}',
));
echo CHtml::link($imgEdit, '#', array(
'style'=>'cursor: pointer; text-decoration: underline;',
'title'=>'Edit Data',
'onclick'=>'{editdata(); $("#pakageDialog").dialog("open"); $.fn.yiiGridView.update("absrule-grid");}',
));
echo CHtml::link($imgDelete, '#', array(
'style'=>'cursor: pointer; text-decoration: underline;',
'title'=>'Delete Data',
'onclick'=>'{deletedata(); $("#pakageDialog").dialog("open"); $.fn.yiiGridView.update("absrule-grid");}',
));
?>
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'pakage-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'selectableRows'=>2,
'columns'=>array(
array(
'class'=>'CCheckBoxColumn',
'id'=>'id',
),
array(
'name'=>'pakage_cd',
'type'=>'raw',
'value'=>'CHtml::encode($data->pakage_cd)'
),
array(
'name'=>'pakage_nm',
'type'=>'raw',
'value'=>'CHtml::encode($data->pakage_nm)'
),
array(
'class'=>'CButtonColumn',
'header'=>'Action',
'template' => '{update}{delete}',
),
array(
'class'=>'CCheckBoxColumn',
'name'=>'active',
'selectableRows'=>'0',
'header'=>'Active',
'checked'=>'$data->active'
),
),
)); ?>
Sedangkan di _form :
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'pakage-form',
'enableAjaxValidation'=>false,
)); ?>
<p class="note">Isian dengan <span class="required">*</span> harap diisi.</p>
<?php //echo CHtml::errorSummary($model); ?>
<div class="row">
<?php echo $form->hiddenField($model,'id'); ?>
<?php echo $form->labelEx($model,'pakage_cd'); ?>
<?php echo $form->textField($model,'pakage_cd',array('size'=>10,'maxlength'=>10)); ?>
<?php echo $form->error($model,'pakage_cd'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'pakage_nm'); ?>
<?php echo $form->textField($model,'pakage_nm',array('size'=>60,'maxlength'=>128)); ?>
<?php echo $form->error($model,'pakage_nm'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'active'); ?>
<?php echo $form->checkBox($model,'active'); ?>
<?php echo $form->error($model,'active'); ?>
</div>
<div class="row buttons">
<?php
//echo CHtml::submitButton($model->isNewRecord ? 'Simpan' : 'Save');
echo CHtml::ajaxSubmitButton('Save',
array('pakage/write'),
array('success'=>'function(data){
var x = eval("(" + data + ")");
document.getElementById("messagediv").innerHTML = data;
if (x.status == "success")
{
$.fn.yiiGridView.update("pakage-grid");
$("#pakageDialog").dialog("close");
document.getElementById("messagediv").innerHTML = "";
}
}'));
?>
</div>
<?php $this->endWidget(); ?>
<div id="messagediv"></div>
</div><!-- form -->
Permasalahannya pada Saat ActionWrite, ketika saat Add Data maka kan menghasilkan Recor baru, tetapi jika saat Update data maka yang terjadi adalah menambah data, mohon koreksi di actionwrite gan… agar Saat Update tidak MENAMBAH DATA baru…
public function actionWrite()
{
if(isset($_POST['Useraccess']))
{
$oldpass=$_POST['passhide'];
$dataku->attributes=$_POST['Useraccess'];
if ((int)$dataku->attributes['useraccessid'] > 0)
{
$model=$this->loadModel($dataku->attributes['useraccessid']);
$model->username = $dataku->attributes['username'];
$model->realname = $dataku->attributes['realname'];
if ($model->password != $oldpass)
{
$model->password = $model->hashPassword($model->password, $model->salt);
}
else
{
$model->password = $oldpass;
}
$model->email = $dataku->attributes['email'];
$model->recordstatus = $dataku->attributes['recordstatus'];
}
else
{
$model = new Useraccess();
$model->attributes=$_POST['Useraccess'];
$model->salt=$model->generateSalt();
$model->password=$model->hashPassword($model->password, $model->salt);
}
try
{
if($model->save())
{
if (Yii::app()->request->isAjaxRequest)
{
echo CJSON::encode(array(
'status'=>'success',
'div'=>"Data saved"
));
}
else
{
Yii::app()->user->setflash($id, array('title' => 'Success', 'content' => 'Data Saved') );
$this->redirect(array('index'));
}
}
}
catch (Exception $e)
{
$errormessage=$model->getErrors();
if ($errormessage == '')
{
$errormessage=$e->getMessage();
}
if (Yii::app()->request->isAjaxRequest)
{
echo CJSON::encode(array(
'status'=>'failure',
'div'=>$errormessage
));
}
}
}
}