从多维数组yii ajaxlink中移除数组



我有一个页面添加项目的表,通过ajax渲染与renderpartial。每次用户添加一个项目时,我都会呈现包含所有项目的表。我也有一个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>

包含表的视图为:

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

谢谢!

我找到问题了。问题不在于unset方法,而在于我显示数组值的视图。而不是使用

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
    }

出现错误是因为每次删除中间数组时键的连续性就会丢失

相关内容

  • 没有找到相关文章

最新更新