Cakephp生成的表单未提交所有数据

Cakephp生成的表单未提交所有数据,php,forms,cakephp,Php,Forms,Cakephp,我有一个名为Prices.ctp的视图,其代码如下。它创建了一个表单,其中回显了名为$products的变量中的所有数据,该变量包含名为products的表中的所有数据 <?php echo $this->Form->create('Product', array('action' => 'changePrice')); ?> <fieldset> <h3>Products</h3> <?php

我有一个名为Prices.ctp的视图,其代码如下。它创建了一个表单,其中回显了名为$products的变量中的所有数据,该变量包含名为products的表中的所有数据

<?php echo $this->Form->create('Product', array('action' => 'changePrice')); ?>
<fieldset>
    <h3>Products</h3>
        <?php
            foreach($products as $k=>$v){
                echo $this->Form->hidden('id', array('value'=> $v["Product"]['id']));
                echo $this->Form->input('name', array('value' => $v["Product"]["name"] ));
                echo $this->Form->hidden('slug', array('value'=>$v["Product"]['slug']));
                echo $this->Form->hidden('description', array('value'=>$v["Product"]['description']));
                echo $this->Form->hidden('cateID', array('value'=>$v["Product"]['cateID']));
                echo $this->Form->input('price', array('value' => $v["Product"]['price']));
                echo $this->Form->hidden('photo', array('value'=>$v["Product"]['photo']));
                echo $this->Form->hidden('photo_dir', array('value'=>$v["Product"]['photo_dir']));
                echo $this->Form->hidden('active', array('value'=>$v["Product"]['active']));
                echo $this->Form->hidden('views', array('value'=>$v["Product"]['views']));
                echo $this->Form->hidden('created', array('value'=>$v["Product"]['created']));
                echo $this->Form->hidden('modified', array('value'=>$v["Product"]['modified']));
    }?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
但是,当我使用debug()检查$this->request->data的内容时,它显示只发送视图中foreach循环的最后一次迭代

换言之,如果原始的$products变量(传递到view prices.ctp中)有4个产品:product1、product2、product3和product4,所有这些产品都有自己的产品表数据(id、名称等),那么当在页面上按下submit按钮时,只有product4的变量将传递到$this->request->data中

为什么会这样


干杯

您可以这样做来获取所有产品的数据

<?php
    foreach($products as $k=>$v){
        echo $this->Form->hidden("Product.{$k}.id", array('value'=> $v["Product"]['id']));
        echo $this->Form->input("Product.{$k}.name", array('value' => $v["Product"]["name"] ));
        echo $this->Form->hidden("Product.{$k}.slug", array('value'=>$v["Product"]['slug']));
        echo $this->Form->hidden("Product.{$k}.description", array('value'=>$v["Product"]['description']));
        echo $this->Form->hidden("Product.{$k}.cateID", array('value'=>$v["Product"]['cateID']));
        echo $this->Form->input("Product.{$k}.price", array('value' => $v["Product"]['price']));
        echo $this->Form->hidden("Product.{$k}.photo", array('value'=>$v["Product"]['photo']));
        echo $this->Form->hidden("Product.{$k}.photo_dir", array('value'=>$v["Product"]['photo_dir']));
        echo $this->Form->hidden("Product.{$k}.active", array('value'=>$v["Product"]['active']));
        echo $this->Form->hidden("Product.{$k}.views", array('value'=>$v["Product"]['views']));
        echo $this->Form->hidden("Product.{$k}.created", array('value'=>$v["Product"]['created']));
        echo $this->Form->hidden("Product.{$k}.modified", array('value'=>$v["Product"]['modified']));
    }
?>

非常感谢您!这很好用。我可以看出我没有引用每个产品索引。再次感谢。
<?php
    foreach($products as $k=>$v){
        echo $this->Form->hidden("Product.{$k}.id", array('value'=> $v["Product"]['id']));
        echo $this->Form->input("Product.{$k}.name", array('value' => $v["Product"]["name"] ));
        echo $this->Form->hidden("Product.{$k}.slug", array('value'=>$v["Product"]['slug']));
        echo $this->Form->hidden("Product.{$k}.description", array('value'=>$v["Product"]['description']));
        echo $this->Form->hidden("Product.{$k}.cateID", array('value'=>$v["Product"]['cateID']));
        echo $this->Form->input("Product.{$k}.price", array('value' => $v["Product"]['price']));
        echo $this->Form->hidden("Product.{$k}.photo", array('value'=>$v["Product"]['photo']));
        echo $this->Form->hidden("Product.{$k}.photo_dir", array('value'=>$v["Product"]['photo_dir']));
        echo $this->Form->hidden("Product.{$k}.active", array('value'=>$v["Product"]['active']));
        echo $this->Form->hidden("Product.{$k}.views", array('value'=>$v["Product"]['views']));
        echo $this->Form->hidden("Product.{$k}.created", array('value'=>$v["Product"]['created']));
        echo $this->Form->hidden("Product.{$k}.modified", array('value'=>$v["Product"]['modified']));
    }
?>