ลบอาร์เรย์ออกจากอาร์เรย์หลายมิติ yii ajaxlink

ฉันมีเพจสำหรับเพิ่มรายการลงในตารางที่แสดงผลด้วย renderpartial ผ่าน ajax ทุกครั้งที่ผู้ใช้เพิ่มรายการ ฉันจะเรนเดอร์ตารางด้วยรายการทั้งหมด ฉันยังมี ajaxlink เพื่อลบรายการที่ผู้ใช้เลือก ปัญหาคือฉันสามารถลบได้เฉพาะบันทึกสุดท้ายของตารางเท่านั้น ถ้าฉันคลิกที่ ajaxlink อื่น ๆ ก็ไม่มีอะไรเกิดขึ้น

นี่คือไฟล์มุมมองสำหรับค้นหาและเพิ่มรายการ

 <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 
}
?>

และผู้ควบคุมก็คือ

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();

            }

ขอบคุณ!


person MarceloClaure    schedule 24.03.2014    source แหล่งที่มา


คำตอบ (1)


ฉันพบปัญหา ปัญหาไม่ใช่วิธีที่ไม่ได้ตั้งค่า แต่อยู่ในมุมมองที่ฉันแสดงค่าในอาร์เรย์ การติดตั้งใช้งาน

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++;
    }

ฉันแทนที่มันด้วย

foreach ($codigo as $key => $value)
    {
            ?>
    <tr>
        <td align="left"><?php echo CHtml::ajaxLink('Quitar', Yii::app()->createUrl('pedidos/quitar'),array('update'=>'#req_res02','type'=>'POST','data'=>array('dato'=>$value['contador'])),array('id'=>'quitar-'.  uniqid())); ?></td>
            <td align="left"><?php echo $value['codigo']; ?></td>
            <td align="left"><?php echo $value['insumo']; ?></td>
            <td align="left"><?php echo $value['cantidad']; ?></td>
            <td align="left"><?php echo $value['observaciones']; ?></td>
            </tr>
            <?php

    }

เกิดข้อผิดพลาดเพราะฉันสูญเสียความต่อเนื่องของคีย์ทุกครั้งที่ลบอาร์เรย์กลาง

person MarceloClaure    schedule 25.03.2014