Saya memiliki halaman untuk menambahkan item ke tabel yang dirender dengan renderpartial melalui ajax. Setiap kali pengguna menambahkan item, saya merender tabel dengan semua item. Saya juga memiliki ajaxlink untuk menghapus item yang dipilih pengguna. Masalahnya saya hanya bisa menghapus record terakhir tabel, jika saya klik ajaxlink lain tidak terjadi apa-apa.
berikut adalah file tampilan untuk mencari dan menambahkan item
<div class="row">
<?php $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'name' => 'test_autocomplete',
'source'=>$this->createUrl('insumos/ver'),
'value' => "",
'options' => array(
'minChars'=>1,
'autoFill'=>false,
'focus'=> 'js:function( event, ui ) {
$( "#test_autocomplete" ).val( ui.item.label );
return false;
}',
'select'=>'js:function( event, ui ) {
$( "#Pedidos_codigoinsumo").val(ui.item.id);
$( "#Pedidos_codigo").val(ui.item.codigo);
$( "#Pedidos_nombre").val(ui.item.label);
$( "#Pedidos_cantidad").focus();
$( "#cantidades").show();
return false;
}',
),
'htmlOptions'=>array( 'autocomplete'=>'off'),
)); ?>
</div>
<div id="cantidades">
<div class="row">
<?php echo $form->labelEx($model,'codigo'); ?>
<?php echo $form->textField($model,'codigo',array('size'=>60,'maxlength'=>300)); ?>
<?php echo $form->hiddenField($model,'codigoinsumo'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'nombre'); ?>
<?php echo $form->textField($model,'nombre',array('size'=>60,'maxlength'=>300)); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'cantidad'); ?>
<?php echo $form->textField($model,'cantidad',array('size'=>60,'maxlength'=>300)); ?>
<?php echo $form->error($model,'codigoinsumo'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'observaciones'); ?>
<?php echo $form->textArea($model,'observaciones',array('rows'=>6, 'cols'=>50)); ?>
</div>
<?php echo CHtml::ajaxButton('Agregar', array('pedidos/adicion'), array('type'=>'POST','data'=>'js:$("#pedidoalmacen-form").serialize()','update'=>'#req_res02'));
echo CHtml::ajaxButton('Cancelar Pedido', array('pedidos/cancelar'), array('update'=>'#req_res02'));
?>
<?php $this->endWidget(); ?>
<div id="req_res02"></div>
the view that has the table is:
if($ver==1)
{
?>
<table>
<tr>
<td align="center">Borrar</td>
<td align="center">Código</td>
<td align="center">Insumo</td>
<td align="center">Cantidad</td>
<td align="center">Observaciones</td>
</tr>
<?php
$codigo= Yii::app()->session['pedido-codigo'];
$contado=count($codigo);
$i=0;
while($i<$contado)
{
?>
<tr>
<td align="left"><?php echo CHtml::ajaxLink('Quitar', Yii::app()->createUrl('pedidos/quitar'),array('update'=>'#req_res02','type'=>'POST','data'=>array('dato'=>$codigo[$i]['contador'])),array('id'=>'quitar-'. uniqid())); ?></td>
<td align="left"><?php echo $codigo[$i]['contador']; ?></td>
<td align="left"><?php echo $codigo[$i]['insumo']; ?></td>
<td align="left"><?php echo $codigo[$i]['cantidad']; ?></td>
<td align="left"><?php echo $codigo[$i]['observaciones']; ?></td>
</tr>
<?php
$i++;
}
?>
</table>
<div class="row buttons">
<?php echo CHtml::submitButton('Agregar'); ?>
</div>
<?php
}
?>
dan pengontrolnya adalah
public function actionAdicion()
{
$model=new Pedidos;
if(isset($_POST['Pedidos']))
{
$model->attributes=$_POST['Pedidos'];
if(isset(Yii::app()->session['pedido-codigo']))
{
$codigo= Yii::app()->session['pedido-codigo'];
$contador=count($codigo)+1;
$auxiliar=array('contador'=>$contador,'id'=>$model->codigoinsumo,'codigo'=>$model->codigo,'insumo'=>$model->nombre,'cantidad'=>$model->cantidad,'observaciones'=>$model->observaciones);
}
else
{
$auxiliar=array('contador'=>1,'id'=>$model->codigoinsumo,'codigo'=>$model->codigo,'insumo'=>$model->nombre,'cantidad'=>$model->cantidad,'observaciones'=>$model->observaciones);
}
$codigo[]=$auxiliar;
Yii::app()->session['pedido-codigo']=$codigo;
$this->renderPartial('insumosporpedir',array('ver'=>'1'),FALSE,TRUE);
//Yii::app()->end();
//echo $_POST['data1'];//CHtml::encode(print_r("hola", true));
}
}
public function actionCancelar()
{
unset(Yii::app()->session['pedido-codigo']);
$this->renderPartial('insumosporpedir',array('ver'=>'0'),FALSE,TRUE);
}
public function actionQuitar()
{
if(isset($_POST['dato']))
{
$codigo= Yii::app()->session['pedido-codigo'];
$compara=$_POST['dato'];
foreach ($codigo as $subkey => $subarray)
{
if($subarray['contador']==$compara)
{
unset($codigo[$subkey]);
//echo $codigo[$subkey];
}
}
$ver=1;
if(count($codigo)>0)
{
Yii::app()->session['pedido-codigo']=$codigo;
}
else
{
unset(Yii::app()->session['pedido-codigo']);
$ver=0;
}
//$this->layout='';
$this->renderPartial('insumosporpedir',array('ver'=>$ver),false,true);
//Yii::app()->end();
}
Terima kasih!