2017-07-19 99 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> 

你會得到你想要的東西....