2017-07-19 75 views
0

得到一个字段的参数我在某种形式上有一个foreach,当我提交时,我得到了控制器中最后一个字段的所有参数。我从表格

形式:

<form action="<?php echo Mage::getUrl('checkout/cart/addmultiple')?>" method="post" id="products_addtocart_form" enctype="multipart/form-data"> 
    <?php foreach ($_productCollection as $prod) : ?> 
     <div class="border-new-cart-button"> 
      <input type="hidden" name="productId" value="<?php echo $productId ?>" /> 
      <input type="hidden" name="productName" value="<?php echo $prod->getName() ?>" /> 
      <input type="text" class="input-qty-product number-control" title="Qty" value="<?php echo /*$this->getProductDefaultQty() * */ 0 ?>" name="qty" id="qty-<?php echo $productId ?>"/> 
     </div> 
    <?php endforeach; ?> 
    <button class="btn add-to-cart" onclick="this.form.submit()"><span><?php echo $this->__('Validate') ?></span></button> 
</form> 

控制器:

public function addmultipleAction(){ 
    $params= array($this->getRequest()->getParams()); 
    var_dump($params); 
    // Result: 
     Array 
      (
      [0] => Array 
         (
          [productId] => 106 
          [productName] => shirt 
          [qty] => 6 
          [productTagName] => 
         ) 

      ) 
} 

编辑:

Now i get them like this: 

[productId] => Array 
        (
         [0] => 106 
         [1] => 107 
         [2] => 108 
         [3] => 109 
        ) 

[qty] => Array 
       (
        [0] => 4 
        [1] => 3 
        [2] => 2 
        [3] => 1 
       ) 


// I want to group the `id` and `qty` per product, something like this: 
array(
     [0] (
      [id] => 106 
      [qty] => 4 
     ) 

     [1] (
      [id] => 107 
      [qty] => 3 
     ) 
     ... 
) 
+0

我不能在表单中找到你的第四个属性“productTagName”,而它是在你的控制器。 –

回答

2

你需要做的投入像这样

数组
<input type="hidden" name="productId[]" value="<?php echo $productId ?>" /> 
<input type="hidden" name="productName[]" value="<?php echo $prod->getName() ?>" /> 
<input type="text" name="qty[]" class="input-qty-product number-control" title="Qty" value="<?php echo /*$this->getProductDefaultQty() * */ 0 ?>" id="qty-<?php echo $productId ?>"/> 

注意:其后的name=""属性已更改为具有[]

+0

看我的编辑请 – mya

+0

对不起,没有自动的方式来做到这一点。你可以将$ _POST数组转换成你喜欢的数组,但是你得到的数据很容易使用,一旦你得到它的窍门 – RiggsFolly

+0

Okey我会这样做,感谢所有其他用户,我接受了更快的数据 – mya

0

您输入的所有具有相同的名称,所以只有最后一个会通过。

<form action="<?php echo Mage::getUrl('checkout/cart/addmultiple')?>" method="post" id="products_addtocart_form" enctype="multipart/form-data"> 
<?php for ($i=0, $length = count($_productCollection); $i < $length; $i++) : ?> 
    <div class="border-new-cart-button"> 
     <input type="hidden" name="item[<?=$i?>][productId]" value="<?php echo $productId ?>" /> 
     <input type="hidden" name="item[<?=$i?>][productName]" value="<?php echo $_productCollection[$i]->getName() ?>" /> 
     <input type="text" class="input-qty-product number-control" title="Qty" value="<?php echo /*$this->getProductDefaultQty() * */ 0 ?>" name="item[<?=$i?>][qty]" id="qty-<?php echo $productId ?>"/> 
    </div> 
<?php endfor; ?> 
<button class="btn add-to-cart" onclick="this.form.submit()"><span><?php echo $this->__('Validate') ?></span></button> 

我会做这样的分组项目一起,而不是三个数组像其他答案建议

0

添加阵列中的所有输入,比如

<form action="<?php echo Mage::getUrl('checkout/cart/addmultiple')?>" method="post" id="products_addtocart_form" enctype="multipart/form-data"> 
<?php foreach ($_productCollection as $prod) : ?> 
    <div class="border-new-cart-button"> 
     <input type="hidden" name="productId[]" value="<?php echo $productId ?>" /> 
     <input type="hidden" name="productName[]" value="<?php echo $prod->getName() ?>" /> 
     <input type="text" class="input-qty-product number-control" title="Qty" value="<?php echo /*$this->getProductDefaultQty() * */ 0 ?>" name="qty[]" id="qty-<?php echo $productId ?>"/> 
    </div> 
<?php endforeach; ?> 
<button class="btn add-to-cart" onclick="this.form.submit()"><span><?php echo $this->__('Validate') ?></span></button> 

你会得到你想要的东西....