2014-03-24 29 views
0

我有一個頁面可以將項目添加到通過ajax使用renderpartial呈現的表中。每次用戶添加一個項目時,我都會使用所有項目呈現該表格。我也有一個ajaxlink來刪除用戶選擇的項目。問題是我只能刪除表格的最後一個記錄,如果我點擊其他ajaxlink,什麼都不會發生。從多維數組中移除數組yii 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(); 

      } 

謝謝!

回答

0

我發現了這個問題。這個問題不是未定義的方法,而是我在數組中顯示值的視圖。 insted的使用

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 

    } 

發生了錯誤,因爲我失去了連續性的鑰匙,每次我刪除中間陣列取代了它