Permisi saya mau tanya tentang extension dynamictabularform.
Pada implementasi aplikasi saya, saya sudah berhasil menggunakan tabular formnya akan tetapi waktu saya klik tombol x untuk
menghapus row tabularnya dia ga mau kehapus, dari mana letak kesalahannya mastah ?.
pada controller action create
public function actionCreate()
{
$model=new Sppb2;
$barangs = array(new Barang2);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Sppb2']))
{
$model->attributes=$_POST['Sppb2'];
if (isset($_POST['Barang2'])) {
$barangs = array();
foreach ($_POST['Barang2'] as $key => $value) {
$birings = new Barang2('batchSave');
$birings->attributes = $value;
$barangs[ ] = $birings;
}
}
$valid = $model->validate();
foreach ($barangs as $birings) {
$valid = $birings->validate() & $valid;
}
if ($valid) {
$transaction = Yii::app()->db->beginTransaction();
try {
$model->save();
$model->refresh();
foreach ($barangs as $birings) {
$birings->kode_brg = $model->id;
$birings->save();
}
$transaction->commit();
}
catch (Exception $e) {
$transaction->rollback();
}
$this->redirect(array('view', 'id' => $model->id));
}
}
$this->render('create',array(
'model' => $model,
'barangs' => $barangs
));
}
controller action update
public function actionUpdate($id)
{
$model=$this->loadModel($id);
$barangs = $model->barangs;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Sppb2']))
{
$model->attributes=$_POST['Sppb2'];
if (isset($_POST['Barang2'])) {
$barangs = array();
foreach ($_POST['Barang2'] as $key => $value) {
if ($value['updateType'] == DynamicTabularForm::UPDATE_TYPE_CREATE)
$barangs[$key] = new Barang2();
else if ($value['updateType'] == DynamicTabularForm::UPDATE_TYPE_UPDATE)
$barangs[$key] = Barang2::model()->findByPk($value['id']);
else if ($value['updateType'] == DynamicTabularForm::UPDATE_TYPE_DELETE) {
$delete = Barang2::model()->findByPk($value['id']);
if ($delete->delete()) {
unset($barangs[$key]);
continue;
}
}
$barangs[$key]->attributes = $value;
}
}
$valid = $model->validate();
foreach ($barangs as $birings) {
$valid = $birings->validate() & $valid;
}
if ($valid) {
$transaction = $model->getDbConnection()->beginTransaction();
try {
$model->save();
$model->refresh();
foreach ($barangs as $birings) {
$birings->kode_brg = $model->id;
$birings->save();
}
$transaction->commit();
}
catch (Exception $e) {
$transaction->rollback();
}
$this->redirect(array('view', 'id' => $model->id));
}
}
$this->render('update',array(
'model'=>$model,
'barangs' => $barangs
));
}
pada _form.php
<?php
/* @var $this Sppb2Controller */
/* @var $model Sppb2 */
/* @var $form CActiveForm */
?>
</br>
<div class="form">
<?php $form = $this->beginWidget('DynamicTabularForm',array(
'id'=>'sppb2-form',
'defaultRowView'=>'_barang_form',
'enableAjaxValidation'=>false,
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<?php echo $form->labelEx($model,'kode_dept'); ?>
<?php echo $form->textField($model,'kode_dept',array('size'=>30,'id'=>'kode_dept','readonly'=>'true','placeholder'=>'Klik Cari Untuk Mencari')); ?>
<?php
//echo $form->hiddenField($model,'kode_dept');
//echo CHtml::textField('kode_dept','',array('size'=>60));
echo CHtml::ajaxbutton('Cari ',Yii::app()->createUrl('Sppb2/GetDepartemen'),
array('update'=>'#kode_field'),array("id"=>'kode_dept'),array('class'=>'glyphicon glyphicon-search'));
?>
<div id="kode_field" style="visibility:hidden;"></div>
<?php echo $form->error($model,'kode_dept'); ?>
<?php echo $form->labelEx($model,'permintaan_dept'); ?>
<?php echo $form->textField($model,'permintaan_dept',array('size'=>30,'maxlength'=>30,'id'=>'nama_dept','readonly'=>'true',)); ?>
<?php echo $form->error($model,'permintaan_dept'); ?>
<?php echo $form->labelEx($model,'gudang_tujuan'); ?>
<?php echo $form->textField($model,'gudang_tujuan',array('size'=>30,'id'=>'nama_gudang','readonly'=>'true','placeholder'=>'Klik Cari Untuk Mencari')); ?>
<?php
//echo $form->hiddenField($model,'kode_dept');
//echo CHtml::textField('kode_dept','',array('size'=>60));
echo CHtml::ajaxbutton('Cari',Yii::app()->createUrl('Sppb2/Getgudang'),
array('update'=>'#kode_field'),array("id"=>'gudang_tujuan'));
?>
<div id="kode_field" style="visibility:hidden;"></div>
<?php echo $form->error($model,'gudang_tujuan'); ?>
<?php echo $form->labelEx($model,'no_sppb'); ?>
<?php echo $form->textField($model,'no_sppb',array(
'size'=>5,'value'=>(($model->isNewRecord)? $model->generateCode() : $model->no_sppb),'readonly'=>'true')); ?>
<?php echo $form->error($model,'no_sppb'); ?>
<?php echo $form->labelEx($model,'tgl_sppb'); ?>
<?php
$properties = array(
'model'=>$model,
'attribute'=>'tgl_sppb',
'options'=>array(
'showAnim'=>'drop',
'dateFormat'=>'yy-mm-dd',
'changeMonth'=>true,
'changeYear'=>true,
'showButtonPanel'=>true,
),
'htmlOptions'=>array(
'style'=>'height:20px;width:80px',
),
);
$this->widget('zii.widgets.jui.CjuiDatePicker',$properties);
?>
<?php echo $form->error($model,'tgl_sppb'); ?>
<?php echo $form->labelEx($model,'year'); ?>
<?php echo $form->textField($model,'year',array(
'size'=>5,'value'=>(($model->isNewRecord)? $model->getYear() : $model->year),'readonly'=>'true')); ?>
<?php echo $form->error($model,'year'); ?>
</br>
<div id="tabular-content">
<?php echo $form->rowForm($barangs) ?>
</div>
<div class="form-actions">
<?php
$this->widget('bootstrap.widgets.TbButton',array(
'buttonType'=>'submit',
'type'=> $model->isNewRecord ? 'primary' : 'primary',
'label'=>$model->isNewRecord ? 'Create' : 'Save',
'block'=>true,
));
$this->widget('bootstrap.widget.TbButton',array(
'buttonType'=>'reset',
'type'=>'danger',
'block'=>true,
'label'=>'Reset',
));
//echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
pada _barang_form.php sebagai tabular formnya
<?php $row_id = "birings-" . $key ?>
<div class='row clearfix' id="<?php echo $row_id ?>">
<?php
echo $form->hiddenField($model, "[$key]id");
echo $form->updateTypeField($model, $key, "updateType", array('key' => $key));
?>
<div class="span-5">
<?php echo $form->labelEx($model,'Kode Barang'); ?>
<?php
echo $form->textField($model, "[$key]kd_brg",array('style'=>'width:60px'));
echo $form->error($model, "[$key]kd_brg");
?>
</div>
<div class="span-5">
<?php echo $form->labelEx($model,'Nama Barang'); ?>
<?php
echo $form->textField($model, "[$key]nm_barang");
echo $form->error($model, "[$key]nm_barang");
?>
</div>
<div class="span-5">
<?php echo $form->labelEx($model,'Satuan'); ?>
<?php
echo $form->textField($model, "[$key]satuan",array('style'=>'width:60px'));
echo $form->error($model, "[$key]satuan");
?>
</div>
<div class="span-5">
<?php echo $form->labelEx($model,'Qty Request'); ?>
<?php
echo $form->textField($model, "[$key]qty_request",array('style'=>'width:60px'));
echo $form->error($model, "[$key]qty_request");
?>
</div>
<div class="span-5">
<?php echo $form->labelEx($model,'Qty Realisasi'); ?>
<?php
echo $form->textField($model, "[$key]qty_realisasi",array('style'=>'width:60px'));
echo $form->error($model, "[$key]qty_realisasi");
?>
</div>
<div class="span-5">
<?php echo $form->labelEx($model,'Keterangan'); ?>
<?php
echo $form->textArea($model, "[$key]keterangan",array('rows'=>5, 'cols'=>50,'class'=>'span9'));
echo $form->error($model, "[$key]keterangan");
?>
</div>
<div class="span-1">
<?php echo $form->deleteRowButton($row_id, $key); ?>
</br>
</br>
</div>
</div>
Tolong Di cek mastah apakah ada kesalahan??
Terima Kasih