【问题标题】:I get just params of one field from form我从表单中只得到一个字段的参数
【发布时间】:2017-07-19 10:39:00
【问题描述】:

我在某个表单上有一个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
          )
       ...
 )

【问题讨论】:

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

标签: php zend-framework zend-form


【解决方案1】:

你需要把输入变成这样的数组

<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="" 属性已更改为在其后加上 []

【讨论】:

  • 请看我的编辑
  • 抱歉,没有自动的方法可以做到这一点。你可以将 $_POST 数组转换成你喜欢的数组,但是一旦你掌握了它,你得到的就很容易使用了
  • 好吧,我会这样做的,感谢所有其他用户,我接受了更快的用户
【解决方案2】:

在所有输入中添加数组,如

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

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

【讨论】:

    【解决方案3】:

    您的所有输入都具有相同的名称,因此只会传递最后一个。

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

    我会这样做将项目组合在一起,而不是像其他答案建议的那样使用三个数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      相关资源
      最近更新 更多